php - 如何在不删除 mysql 中的 Group 的情况下获取所有记录
问题描述
我正在使用考勤管理系统。我必须准备一些报告打孔报告,其中包括每个员工的所有指纹记录。我想要显示日期和与该日期相关的所有时间的 crate 表。使用以下查询我得到了这样的结果
SELECT * FROM `attendancedata` where `EnrolledID`= 23 GROUP BY
Date,EnrolledID,Time ORDER BY Date DESC,Time DESC
EnrolledID Date Time
23 2019-09-09 07:58:36
23 2019-09-07 17:25:00
23 2019-09-07 16:08:27
23 2019-09-07 07:32:39
23 2019-09-06 16:00:10
23 2019-09-06 07:48:51
23 2019-09-05 16:00:23
23 2019-09-05 07:40:55
23 2019-09-04 16:00:39
23 2019-09-04 07:45:42
23 2019-09-03 16:00:06
23 2019-09-03 07:43:32
23 2019-09-02 16:00:04
23 2019-09-02 07:56:25
我的预期结果是
Date P01 P02 P03 P04 P05 P06 P07
2019-09-02 07:56:25 16:00:04
2019-09-03 07:43:32 16:00:06
2019-09-04 07:45:42 16:00:39
2019-09-05 07:40:55 16:00:23
2019-09-06 07:48:51 16:00:10
2019-09-07 07:32:39 16:08:27 17:25:00
2019-09-08 07:58:36
我该如何解决这个问题?(打卡时间限制最多7次)(使用查询或使用php)
解决方案
MySQL 5.7 及更低版本:
- 使用 MySQL 变量根据
date
和进行排名time
。我们已经假设它仅适用于一个用户。 - 通过7 列拆分信息用于
CASE WHEN
派生结果。aggregation
SELECT
t.`Date`,
MAX(CASE WHEN rank = 1 THEN t.`Time` END) AS PO1,
MAX(CASE WHEN rank = 2 THEN t.`Time` END) AS PO2,
MAX(CASE WHEN rank = 3 THEN t.`Time` END) AS PO3,
MAX(CASE WHEN rank = 4 THEN t.`Time` END) AS PO4,
MAX(CASE WHEN rank = 5 THEN t.`Time` END) AS PO5,
MAX(CASE WHEN rank = 6 THEN t.`Time` END) AS PO6,
MAX(CASE WHEN rank = 7 THEN t.`Time` END) AS PO7
FROM (
SELECT
a.`Date`,
a.`Time`,
IF(@old_date = a.`Date`, @rank:= @rank + 1, @rank:= 1) AS rank, -- Assigning ranks
@old_date:= a.`Date`
FROM attendancedata a,
(SELECT @old_date:= '0000-00-00' AS o_d, @rank:= 0 AS r) dt
WHERE a.EnrolledId = 23 -- Picking only data for user 23
ORDER By `Date`, `Time` -- Make sure to do sorting, based on sorted data, ranking will appear.
) AS t
GROUP BY t.`Date`
ORDER BY t.`Date`;
推荐阅读
- javascript - 在javascript中将ISO日期转换为T00:00:00Z
- php - Yii2 在智能手机上发送 GET 请求,但在计算机上发送 POST 请求
- ipfs - 从 IPFS 后端获取 429
- .net - 加载 EML 文件时未获取电子邮件的所有属性
- python - Azure Python SDK:BlobServiceClient 与 BlobClient?
- flutter - 如何在颤动中为滑块中的拇指图标赋予矩形形状?
- python - IndexError:列表索引超出范围。对于 Stitch API,当我使用 python 做 API 时,对于一些输入,我得到输出,只有最后一行有索引错误
- android - Prism.Forms DI:如何避免多个单例实例?
- java - 调用 api 时获取 {"status":100,"errormsg":"Failed to parse text in form param"}
- python - 如何在 python 中找到 y 的最小值和最大值并在它们之间绘制边界?