0

次のデータを含む 'tools' と 'checkinout' の 2 つのテーブルがあります (関係のない列は省略しています)。

**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

いくつかのクエリを試しましたが、うまくいきません。これは私の最初の試みであり、現在チェックアウトされているツールが 1 つだけで、複数のツールがクエリを中断する場合に完全に機能します。

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 に答える