私はすべてのコースを教えた教授を見つけようとしています。以下を実行すると、正解が得られます。
select P1.pid
from Professors P1
where NOT EXISTS(select C2.cid
from Teaches T2, Courses C2
where T2.cid = C2.cid
EXCEPT
select C3.cid
from Teaches T3, Courses C3
where T3.cid = C3.cid AND T3.pid = P1.pid)
ただし、これを実行すると、nullセットが取得されます。
select P1.pid
from Professors P1
where NOT EXISTS(select *
from Teaches T2, Courses C2
where T2.cid = C2.cid
EXCEPT
select *
from Teaches T3, Courses C3
where T3.cid = C3.cid AND T3.pid = P1.pid)
これらの2つのクエリが異なるとは思っていませんでした。なぜ2番目のものは何も返さないのですか?