Moin!
ja, das ging jetzt:
select a.artikelname, a.kategorie_nr, einzelpreis from artikel as a where einzelpreis = (select max(einzelpreis) from artikel as a1 where a.kategorie_nr = a1.kategorie_nr);
Denk dran, dass das Ergebnis auch mehr als einen Artikel ergeben kann, sofern es zwei oder mehr Artikel mit dem gleichen, teuersten, Preis gibt.
es gibt demnach also keine möglichkeit, das alleine über group by zu lösen, oder?
Ausgeschlossen. MySQL erlaubt es zwar, neben den mit Aggregatfunktionen (COUNT, SUM, MAX,...) versehenen und den im GROUP BY aufgeführten Spalten noch weitere Spalten auszugeben, fordert aber dabei ausdrücklich, dass die einzelnen Ergebniszeilen identischen Inhalt haben müssen, da andernfalls eine zufällige Zeile ausgesucht wird. MySQL begründet dieses Feature mit Performance (man muß diese Spalte nicht nochmal extra ins GROUP BY packen, und die Datenbank muß es folglich auch nicht extra gruppieren), jede andere Datenbank wird an dieser Stelle aber einen Fehler melden.
- Sven Rautenberg