如何在MySQL中编写此查询?
问题描述:
这些都是我们的表:如何在MySQL中编写此查询?
Suppliers(sid:integer,sname:string,address:string)
Parts(pid:integer,pname:string,color:string)
Catalog(sid:integer,pid:integer,cost:real)
我需要编写一个查询给我们的供应商(sname
)和最昂贵的部分他们每个人都有的名字,其中有红色或绿色的部分每一个供应商。
答
当我听到每一个,我立即想到分组结果。所以你错过了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
示例数据将是很好的,你到目前为止与你遇到的问题一起的代码。 –
我们没有样品数据,这是在我们的考试中,我写了这个,但它是错误的: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
您可以制作一些。此外,问题还不清楚 - 最昂贵的零件是指最昂贵的红色或绿色零件,还是颜色无关紧要。 –