我在数据库中有两个表,用于跟踪当前在现场的人员。有一个所有员工的列表和他们的员工编号,以及一个签到/签出日志。
我要做的是创建一份每日报告,记录谁在现场,谁缺席。为此,我检查clock_log表中今天日期的所有记录,如下所示:
SELECT `Clock_Log`.Clock_Number, `Clock_Log`.Date, `Clock_Log`.Time_In,
`Clock_Log`.Time_Out, IF(`Clock_Log`.Shift_Ended = 0, 'On Site', 'Shift Ended')
AS Status FROM `Clock_Log` WHERE Date = CURDATE();它输出类似以下内容:
Clock_Number | Date | Time_In | Time_Out | Status
123 | 2019-02-14 | 07:00:00 | 00:00:00 | On Site
456 | 2019-02-14 | 07:00:00 | 15:00:00 | Shift Ended
789 | 2019-02-14 | 00:00:00 | 00:00:00 | Absent我现在需要做的是从所有员工的列表中选择今天没有打卡的所有记录,并将这些记录附加到状态设置为“缺勤”的结果中。作为上面的第三个条目。
这个是可能的吗?如果不是,是否可以在末尾添加一个额外的列,简单地列出没有打卡的数字?
发布于 2019-02-14 16:53:49
使用staff表作为FROM,然后将此查询连接到表中
另外,别名
select t1.*, t2.*
from all_staff t1
left join
(
SELECT t3.Clock_Number,
t3.Date,
t3.Time_In,
t3.Time_Out,
IF(t3.Shift_Ended = 0, 'On Site', 'Shift Ended') AS Status
FROM `Clock_Log` t3 WHERE Date = CURDATE()
) t2
on t1.clock_number = t2.clock_numberhttps://stackoverflow.com/questions/54686321
复制相似问题