1

我有一张桌子可以跟踪工人何时进出工厂。还有一个相应的表来跟踪工人的花名册。我需要知道工人何时在没有相应名册的情况下打卡。即他们在没有名册的时候工作。

示例表数据:

时钟:

名称 日期 开始时间 结束时间
史密斯 2013/06/25 09:00 17:00
史密斯 2013/06/26 09:03 17:01
史密斯 2013/06/27 08:58 16:57
棕色 2013/06/25 09:00 17:00

名册:

名称 日期 开始时间 结束时间
史密斯 2013/06/25 09:00 17:00
史密斯 2013/06/27 09:00 17:00

因此,我需要在 2013 年 6 月 26 日和布朗 2013 年 6 月 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
4

1 回答 1

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 个部分)。

于 2013-06-21T03:08:25.863 回答