2017-03-01 3 views
-9

Dies sind unsere Tabellen:Wie schreibe ich diese Abfrage in MySQL?

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

ich eine Abfrage schreiben, müssen Sie uns geben Namen der Lieferanten (sname) und dem teuersten Teil jeder von ihnen haben, für jeden Lieferanten, die entweder rot oder grün Teile hat .

+1

Beispieldaten wäre schön, und der Code, den Sie bisher haben zusammen mit den Problemen, die aufgetreten sind. –

+0

wir haben keine Beispieldaten, dies war in unserer Prüfung, ich schrieb dies, aber es war falsch: SELECT Supplier.pname, MAX (Catalog.cost) FROM Teile, Katalog, Lieferant WHERE Parts.color = 'RED' ODER Teile .color = 'GRÜN' AND Supplier.sid = Catalog.sid UND Parts.pid = Catalog.pid – omidelf

+0

Sie könnten etwas machen. Auch die Frage ist unklar - bedeutet der teuerste Teil den teuersten roten oder grünen Teil oder ist die Farbe irrelevant? –

Antwort

0

Wenn ich jedes höre, denke ich sofort an die Gruppierung der Ergebnisse. Sie verpassen also die Gruppierung nach Klausel. Sie mussten die Daten basierend auf jedem Lieferanten gruppieren. Ich bin wohler mit Join verwenden. Ich denke, die richtige Antwort wäre:

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 
Verwandte Themen