私は次の関係を持っています
Supplies
sid 1 2 3 4
sname Jason David John Peter
address 1a 2b 3c 4d
Parts
pid 10 20 30 40 50
pname Head Body Hand Leg Arm
color red blue green white red
Catalog
sid 1 1 2 2 3 4 1 1 4 4 1
pid 10 20 20 30 30 40 30 40 10 50 50
cost 100 200 150 150 130 125 50 180 123 126 120
そして、すべての赤または緑の部品を供給するサプライヤの sid を選択したいと考えています。という意味だと思いますit not exist that green or red parts that not supplied by him.
したがって、次のクエリを実行しますが、null を返します。sid is 1 を返す必要があると思います。
SELECT S.sid
FROM Suppliers S
WHERE NOT
EXISTS (
SELECT P.pid
FROM Parts P
WHERE P.color = 'red' OR P.color = 'green'
AND NOT
EXISTS (
SELECT C.pid
FROM Catalog C
WHERE C.pid = P.pid
AND C.sid = S.sid
)
)
どうすれば修正できますか?少し早いですがお礼を。