我有一张时间表,有几个人使用它
用户拥有用户的用户名和ID,这与时间表相关,存储日期和user_id,user_id和id是链接,因此表2可能每天都有一个新条目。
现在我要做的是收集一份没有更新今天时间表的人员名单。这是我的新手尝试
从用户左侧选择*加入时间表ON users.id = timesheet.user_id WHERE timesheet.user_id为null AND timesheet.value 为空
这将返回所有没有时间表条目的用户,这些用户条目完美但我查询特定的日期,所以如果他们昨天填写它们,它们在时间表中会有相应的条目,但它仍然意味着它们今天没有填写它。
我试过
从用户左侧选择*加入时间表ON users.id = timesheet.user_id WHERE timesheet.user_id为null AND timesheet.value 为null AND timesheet.date!= '12 -09-05'
我可以看到该逻辑中的缺陷,我已经排除了我希望按日期进一步过滤的人,但我无法理解如何获得我想要的结果。我真的希望它首先按日期过滤,然后运行该查询但我不知道如何做到这一点,因为我不太熟悉MySQL和谷歌说他不知道答案
答案 0 :(得分:0)
将日期条件移至ON
子句:
SELECT * FROM `users`
LEFT JOIN `timesheet`
ON `users`.`id`=`timesheet`.`user_id` AND `timesheet`.`date`=CURDATE()
WHERE `timesheet`.`user_id` IS NULL AND `timesheet`.`value` IS NULL