私は木曜日に行った試験のためにいくつかのSQLを行ってきましたが、EXISTSステートメントを正しく使用しているかどうか疑問があります。これはEXISTSを使用する正しい方法ですか?
だから、ここで私は2つのテーブルそう
Machines Maintenance
============ ==============
PK ID_Machine PK ID_Machine FK
Name PK ID_Task FK
Date_bought Date
でDBを持って、彼らは私が書きたいクエリが「2011年に任意のメンテナンスを受けていない最も古いマシンから表示するすべてのデータを」と言います
私はそれをやった方法は以下の通りです:
SELECT M.ID_MACHINE, M.NAME, M.DATE_BOUGHT
FROM MACHINES M
WHERE NOT EXISTS (SELECT MA.*
FROM MAINTENANCE MA
WHERE MA.ID_MACHINE = M.ID_MACHINE
AND YEAR(MA.DATE) = 2011)
AND EXISTS (SELECT MIN(M2.DATE_BOUGHT)
FROM MACHINE M2
WHERE M2.ID_MACHINE = M.ID_MACHINE)
これは、このクエリを実行するための正しい方法は何ですか? EXISTS文の中でSELECT MIN()を使うのは意味がありますか?
おかげさまで皆様に感謝します!
クエリを実行しようとすると、まあ....何が起こりますか? –
さて、実際には、私はこのDBをどのDBMSでも作成していないということです。それは教科書の単なる運動であり、私はそれを紙で解決しています。 Unfortunatelly、教科書には答えがないので、私は尋ねていたのです。 – nachoargentina
うまく始めるには、2番目の「どこか」の代わりに 'AND' *が必要です。また、 'EXISTS'の中で' SELECT MIN() 'を使わないでください。意味がありません。 – Bohemian