Hallo!
Ich komme immer wieder in die Situation, dass ich per "GROUP BY" z.B. einen maximalen Wert in einer Spalte auslese, dann aber auch gerne gleichzeitig den zugehörigen Schlüssel (ID) auslesen würde, was leider nicht geht wenn die ID nicht hinter GROUP BY aufgelistet ist.
Mal als Beispiel eine Produkt-Tabelle:
id | warengruppe | preis...
---+-------------+---------
1 | A | 123
2 | A | 234
3 | B | 345
Jeder Datensatz hat eine eigene "id". Wie komme ich jetzt also an die ID des jeweilig teuersten Produktes in einer Warengruppe?
SELECT MAX(preis)
FROM produkte
GROUP BY warengruppe
Aber wie komme ich jetzt an die ID? Man könnte jetzt herkommen und jede Warengruppe einzelnd mit ORDER BY preis LIMIT 1 abfragen, z.B.:
SELECT id
FROM produkte
WHERE warengruppe = 'A'
ORDER BY preis DESC
LIMIT 1
aber wenn das jetzt 1000 Warengruppen sind? Oder der SQL-Code deutlich komplexer? Gibt es keine elegantere Möglichkeit?
Grüße
Andreas
SELFHTML Linkverzeichnis: http://aktuell.de.selfhtml.org/links/