SELECT mit Unterabfragen oder wie kann man mehrfach GROUP BY verwenden

4 Nov 2008 um 19:30 - MySQL/Datenbank

In der Arbeit gibt es nicht so viele spannende Sachen, aber vor einigen Wochen habe ich im alten Code die nicht triviale interessante SQL-Abfrage gefunden. Zuerst habe ich nicht verstanden, worum es ging...

Die Abfrage hat die folgende Struktur:

SELECT A.etwas3, SUM(A.etwas1) FROM (
SELECT etwas1, MAX(etwas2), etwas3
FROM table1 GROUP BY etwas1
) A GROUP BY A.etwas3

Irgerndwie so war es: zuerst eine Abfrage mit Gruppierung, dann zweite Abfrage mit Gruppierung aus den Ergebnissen der ersten Abfrage. Ja, man könnte das anders mit zusätzliche LEFT JOINs lösen oder dann mit PHP selbst alles berechnen, aber so finde ich es schöner :)

Die Unterabfragen werden sehr gut in SQL-Dokumentation erklärt. In Kürze hatte ich so was (damals wusste ich nicht, dass es "Unterabfragen" heisst):

DELETE FROM table1 WHERE table1.id IN
(SELECT table2.id FROM table2 WHERE bedingung1)

So kann man die überflüssige Programmierung vermeiden - ab jetzt keine weitere Sortierung der Ergebnissen einer Abfrage. Man kann alles leichter lösen, schwer ist nur dies zu können :)

Kommentare

Bisland keine Kommentare - sei der erste!


© 2008 Anton Pavlushko - Webentwicklung, Internetmarketing und Suchmaschinenoptimierung (SEO)

0.0076329708099365 sec