我有两个表先是员工表,第二个是考勤表。现在我想找到每个员工在一个月内失踪的所有人。所有缺失的日期应该列在清单中。
员工表
emp_code emp_name
1 A
2 B
出勤表
emp_code Log_Date
1 2017-04-01
1 2017-04-02
1 2017-04-03
2 2017-04-01
2 2017-04-02
2 2017-04-03
预期结果
emp_code Log_Date
1 2017-04-04
1 2017-04-05
1 2017-04-06
.
.
1 2017-04-30
2 2017-04-04
2 2017-04-05
2 2017-04-06
.
.
2 2017-04-30
答案 0 :(得分:0)
我找到了问题的正确答案。
我创建了一个month_days表,其中插入了12个月的所有日子。
id date
1 2017-04-1
2 2017-04-2
3 2017-04-3
.
.
30 2017-04-30
31 2017-05-1
32 2017-05-2
33 2017-05-3
.
.
34 2017-05-31
这是查询
SELECT *
FROM month_days d
CROSS JOIN employees e
LEFT JOIN attendances l ON d.date = DATE( l.log_date ) AND
e.emp_code = l.emp_code
WHERE l.emp_code IS NULL
GROUP BY d.date, e.emp_code
答案 1 :(得分:-2)
SELECT e.emp_name,a.log_date FROM employee e INNER JOIN出席会议 上 (e.emp_code = a.emp_code) AND a.log_date ='';