我有一张表来跟踪工人进出工厂的时间。还有一个跟踪工人名单的相应表格。我需要知道一个工人什么时候没有相应的名册。也就是说,当他们没有被列入名单时,他们就会工作。
示例表数据:
Name Date StartTime EndTime Smith 2013/06/25 09:00 17:00 Smith 2013/06/26 09:03 17:01 Smith 2013/06/27 08:58 16:57 Brown 2013/06/25 09:00 17:00
Name Date StartTime EndTime Smith 2013/06/25 09:00 17:00 Smith 2013/06/27 09:00 17:00
因此,我需要看到史密斯2013/06/26和布朗2013/06/25,因为在他们工作的那一天,没有任何工人的名单。
我的下面的脚本不起作用 - 我只是得到一个空白的回报。有什么想法吗?
SELECT * FROM clocks c
LEFT JOIN roster r1
ON clocks.date = roster.date
Left join roster r2
on c.name = r2.name
WHERE r1.date IS NULL
答案 0 :(得分:1)
您只想加入名单表一次:
SELECT c.name, c.date
FROM clocks c
LEFT JOIN roster r
ON c.date = r.date
AND c.name = r.name
WHERE r.date IS NULL
此查询返回时钟表中所有名称/日期,其中名单表中没有对应的行。只需要1个连接(连接谓词有2个部分)。