如何在MySQL中编写此查询?

问题描述:

这些都是我们的表:如何在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

您可以制作一些。此外,问题还不清楚 - 最昂贵的零件是指最昂贵的红色或绿色零件,还是颜色无关紧要。 –

当我听到每一个,我立即想到分组结果。所以你错过了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