我有以下關係和找到每一個項目,最昂貴的一些條件
1.I要找到每一個供應商提供的零部件的PID,並在低於200 (如有供應商要麼不不能簡單地超過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
我想去尋找每一個提供綠色部分和紅色部分供應商,打印最貴的名稱和價格她供應的部分。
我只能找出綠色和紅色部分,但找不到最貴的。
查詢是我試過了。
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小時後。
能否請您解釋,爲什麼'10'應該在結果列表中的第1部分? – 2013-05-09 05:50:00
因爲pid爲10的部分出現在每個供應商中,並且都小於200. – 2013-05-09 05:55:33