使用if语句从多个表中进行MySQL SELECT

时间:2019-02-14 08:46:43

标签: mysql sql select

我在数据库中有两个表,用于跟踪当前在现场的人员。 列出所有工作人员及其工作人员编号,以及上班/下班日志。

我要做的是创建一份关于谁在现场和谁不在的每日报告。为此,我正在检查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

我现在需要做的是从所有今天尚未上班的员工列表中选择所有记录,并将这些记录附加到结果设置为“缺席”的结果中。作为上面的第三项。

这可能吗?如果不能,是否可以在末尾添加一列,只是列出未计时的数字?

1 个答案:

答案 0 :(得分:2)

使用人员表作为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_number