我正在创建时间表应用程序。 用户将填写时间表并每周提交一次,以批准他们各自的报告负责人。 有一个名为week_approval的表,该表具有以下结构。
id(Primary)-int(11)
employee_id(Index)-int(11)
week_start_date(Index)-date
status-int(11)
员工每周提交时间表时,都会在该表中添加一条记录。 Week_start_date列记录星期几。 状态栏显示该周时间表的状态为; 0 =已保存,1 =已提交,2 =已批准,3 =已拒绝
我正在尝试创建一个查询,以提取特定时期内所有缺少的时间表。
我已经尝试了一些方法以如下方式获取2019年4月的报告;
SELECT week_approval.employee_id, COUNT(week_approval.id)
FROM week_approval
WHERE week_approval.week_start_date > '2019-05-01'
GROUP BY week_approval.employee_id
HAVING COUNT(week_approval.id) < 3
LIMIT 100
为此,我从employee_id分组的表中检查了id的计数,并检查计数是否小于5。 4月有5个工作周开始日期; 1,8,15,22和29。 但是,这太麻烦了,因为我必须手动计算出两个时间段之间有几周的开始日期。在这种情况下5。 此外,它不会给我丢失的几周时间,而仅给出计数。
预期结果是;
+------------+--------------+
|employee_id | week missing |
+------------+--------------+
| 2 | 2019-04-01 |
+------------+--------------+
| 12 | 2019-04-01 |
+------------+--------------+
| 18 | 2019-04-08 |
+------------+--------------+