これは、NOT IN、IN、NOT EXISTS、EXISTS、ANY、ALL のセット演算子のみを使用して SQL oracle で行われます。
データベースは次のとおりです。
Department(DeptNum, Descrip, Instname, DeptName, State, Postcode)
Academic(AcNum, DeptNum*, FamName, GiveName, Initials, Title)
Paper(PaNum, Title)
Author(PaNum*, AcNum*)
Field(FieldNum, ID, Title)
Interest(FieldNum*, AcNum*, Descrip)
質問は:
誰も論文を執筆していないクイーンズランド州 (QLD または Qld) の部門の部門番号、説明、および機関名を検索します。
私の現在の試みは、どの州の出身であっても誰も論文を書いていない部門を突き止めることです
SELECT department.deptNum, department.state, department.instname
FROM department, academic
WHERE department.deptnum = academic.deptnum
AND NOT EXISTS
(SELECT *
FROM author
WHERE acnum = academic.acnum);
しかし、どうやらそれは1つのタプルのみを返すはずです。私は 3 1 を取得します。そのうちの 1 は QLD です。追加して他の2つを削除しようとすると
AND department.state = 'QLD' OR department.state = 'Qld'
WHERE 句と AND NOT EXISTS の間で、結果が多すぎます。
誰でも私を解決策に導くことができますか?