0

我有两个表“工具”和“签出”,其中包含以下数据(我省略了不相关的列):

**tools**
id
---------
1
2
3
4
5

**checkinout**
CheckOutDT     CheckInDT     idTool
------------------------------------
2013-11-01     2013-11-02    1
2013-11-01     2013-11-02    2
2013-11-02     NULL          2
2013-11-03     NULL          4

tool.id 是 checkinout.idTool

我需要我的查询来返回结果

tool_query
id
--------
1
3
5

我已经尝试了几个查询,但没有运气。这是我最初的尝试,如果我当前只有一个工具被检出但不止一个工具会破坏查询,那么它会非常有效:

SELECT DISTINCT tools.id, tools.ToolNumber, tools.Description 
FROM tools, checkinout 
WHERE tools.id<>(
  SELECT checkinout.idTool 
  FROM checkinout 
  WHERE checkinout.CheckInDT Is Null)

我所有的其他尝试都没有比这更好。我很感激这方面的任何帮助。在过去的 4.5 小时里,我一直在与此作斗争。

4

2 回答 2

1
SELECT DISTINCT t.id
FROM tools t
LEFT JOIN checkinout c ON t.id = c.idTool AND c.CheckInDT IS NULL
WHERE c.idTool IS NULL

小提琴

于 2013-11-05T03:23:05.720 回答
0

您的查询非常接近。您只是不需要from子句中的额外表格,并且需要where正确地表达子句:

SELECT tools.id, tools.ToolNumber, tools.Description 
FROM tools
WHERE tools.id not in (SELECT checkinout.idTool 
                       FROM checkinout 
                       WHERE checkinout.CheckInDT Is Null
                      )
于 2013-11-05T03:19:18.927 回答