Andreas Korthaus: zusätzliche Daten bei GROUP BY abfragen

Beitrag lesen

Hallo!

SELECT ID, MAX(preis)
    FROM produkte
    GROUP BY warengruppe

Das ist an sich kein gültiges SQL-Statement, da es nicht eindeutig ist. Das funktioniert nur in kaputten Datenbanken.

jepp, siehe: http://aktuell.de.selfhtml.org/tippstricks/datenbanken/having/

Eine mögliche Lösungsvariante ist:

SELECT id, preis
  FROM tabelle
WHERE preis = (SELECT MAX(preis) FROM tabelle)

Allerdings muss dazu das Datenbanksystem auch Sub-Queries verstehen.

Hm, bisher habe ich immer einen Bogen um etwas fortschrittlichere Features gemacht, da ich nach Möglichkeit keinen DB-spezifischen Code schreiben will. Ich verwende eine DB-Abstraktion, und achte darauf immer einfaches/portables SQL zu verwenden - und mir ist klar dass ich hierdurch ineffizienteren Code schreibe. Kennst Du oder jemand anders hier eine nette Gegenüberstellung was welches RDBMS unterstützt? Bei mir sollten zumindest folgende unterstützt werden:

PostgreSQL
MySQL
Oracle
IBM DB2
MSSQL

das wären die wichtigsten. Z.B. bei Sub-Queries, das ist ein Feature was ich schon des öfteren gut hätte gebrauchen können. MySQL kann das ja auch ab 4.1, allerdings habe ich - je komplexer die Queries werden - immer größere Befürchtungen dass es nicht mehr überall läuft. Habt Ihr da Erfahrungen?

Grüße
Andreas

--
SELFHTML Linkverzeichnis: http://aktuell.de.selfhtml.org/links/