Klaus Mock: GROUP BY-KLAUSEL IN SQL

Beitrag lesen

Hallo,

Ich möchte nach einer bestimmten Spalte gruppieren, um z.B. alle mit der gleichen Adresse zusammen anzeigen zu lassen und dann aber trotzdem die Namen alphabetisch sortiern zu können

Friedrich             Berliner Str.
Müller                Berliner Str.
....

GROUP BY dient alleine dazu Auswertung zu erzeugen, wobei ein oder mehrere Felder den gleichen Wert besitzen. Also für Fragestellungen wie:
Sage mir, wieviele Personen pro Straße es gibt.
(select ORT,STRASSE,count(*) from ADRESSEN group by ORT,STRASSE)

Das Ergebnis kann dann sein:

Winzdorf  Gartenweg      3
Winzdorf  Hauptstraße   18
Berlin    Upsgasse      13
...

Du kannst aber nicht
select ORT,STRASSE,COUNT(*) from ADRESSEN group by ORT
verwenden. Woher soll die Datenbank wissen, welche der möglichen Straßen im Ergebnis einfließen soll, und welche nicht (Gartenweg oder Hauptstraße).

Wenn Du sortieren willst, mußt Du Dich entscheiden wonach du zuert sortieren willst, und wonach sonst noch. Es geht einfahc nicht ZWar alle Namen zu sortieren, aber die Strassen auch mit zu berücksichtigen, daß diese quasi zusammenbleiben. Ein Feld muß unbedingt Vorrang haben. Versuche einmal im Windowsexplorer die Dateien im System32-Verzeichnis so zu sortieren, daß zwar die Dateinamen streng aufsteigend sind, aber trotzdem alle Dateien mit gleichem Änderungsdatum zusammen anhgezeigt werden. Du wirst sehen, daß Du das einfach nicht hinkriegst. Und genausowenig funktioniert das in einer Datenbank.

Grüße
  Klaus