2017-03-01 120 views
-9

這些都是我們的表:如何在MySQL中編寫此查詢?

Suppliers(sid:integer,sname:string,address:string) 
Parts(pid:integer,pname:string,color:string) 
Catalog(sid:integer,pid:integer,cost:real) 

我需要編寫一個查詢給我們的供應商(sname)和最昂貴的部分他們每個人都有的名字,其中有紅色或綠色的部分每一個供應商。

+1

示例數據將是很好的,你到目前爲止與你遇到的問題一起的代碼。 –

+0

我們沒有樣品數據,這是在我們的考試中,我寫了這個,但它是錯誤的:SELECT Supplier.pname,MAX(Catalog.cost) FROM Parts,Catalog,Supplier Where Parts.color ='RED'OR Parts .color ='GREEN' AND Supplier.sid = Catalog.sid AND Parts.pid = Catalog.pid – omidelf

+0

您可以製作一些。此外,問題還不清楚 - 最昂貴的零件是指最昂貴的紅色或綠色零件,還是顏色無關緊要。 –

回答

0

當我聽到每一個,我立即想到分組結果。所以你錯過了group by子句。您需要根據每個供應商對數據進行分組。 我更喜歡使用連接。 我認爲正確的答案是:

SELECT S.name, Max(C.cost) FROM Suppliers S 
INNER JOIN Catalog C On S.sid = C.sid 
INNER JOIN Parts P on P.pid = C.pid 
Where P.color = 'RED' OR P.color = 'GREEN' 
GROUP BY S.name