首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用If语句从多个表中选择MySQL

使用If语句从多个表中选择MySQL
EN

Stack Overflow用户
提问于 2019-02-14 16:46:43
回答 1查看 830关注 0票数 0

我在数据库中有两个表,用于跟踪当前在现场的人员。有一个所有员工的列表和他们的员工编号,以及一个签到/签出日志。

我要做的是创建一份每日报告,记录谁在现场,谁缺席。为此,我检查clock_log表中今天日期的所有记录,如下所示:

代码语言:javascript
复制
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();

它输出类似以下内容:

代码语言:javascript
复制
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

我现在需要做的是从所有员工的列表中选择今天没有打卡的所有记录,并将这些记录附加到状态设置为“缺勤”的结果中。作为上面的第三个条目。

这个是可能的吗?如果不是,是否可以在末尾添加一个额外的列,简单地列出没有打卡的数字?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-14 16:53:49

使用staff表作为FROM,然后将此查询连接到表中

另外,别名

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54686321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档