私は次の関係を持っており、
1.すべてのサプライヤから供給された部品の pid が 200 未満であることを確認したい。
フィドルhttp://sqlfiddle.com/#!2/4b5d4
Supplies
sid 1 2 3 4 5
sname Jason David John Peter Jay
address 221 2b 3c 4d 5e
Parts
pid 10 20 30 40 50 60
pname Head Body Hand Leg Arm Foot
color red blue green white red green
Catalog
sid 1 1 2 2 3 4 1 1 4 4 1 5 5 3 3 2
pid 10 20 20 30 30 40 30 40 10 50 50 50 10 60 10 10
cost 150 220 150 150 130 125 130 280 123 126 120 100 100 210 100 50
だから私は次のクエリを実行しますthere is no parts that the suppliers don't supply it.
SELECT C.pid
FROM CATALOG C
WHERE C.cost < 200
AND NOT EXISTS (SELECT S.sid
FROM Suppliers S
WHERE NOT EXISTS
(SELECT P.pid
FROM Parts P
WHERE P.pid = C.pid
AND S.sid = C.sid ))
null を返しますが、10 を返す必要があります。
2.緑の部品と赤の部品を供給するすべてのサプライヤーを見つけて、そのサプライヤーが供給する最も高価な部品の名前と価格を出力したいと考えています。
私は緑と赤の部分を見つけることができますが、最も高価なものを見つけることができません.
クエリは、私が試したことです。
SELECT S.sname
FROM Suppliers AS S,
Parts AS P1,
CATALOG AS C1,
Parts AS P2 ,
CATALOG AS C2
WHERE S.sid = C1.sid
AND C1.pid = P1.pid
AND S.sid = C2.sid
AND C2.pid = P2.pid
AND ( P1.color = 'red'
AND P2.color = 'green' )
どうすれば修正できますか?少し早いですがお礼を。
ps 授業に行かなければならないことを申し訳ありません。約 6 時間後に返信します。