SELECT COUNT (*) MIT GROUP BY ?

squeezer

Grünschnabel
Hallo Community,

ich bin SQL-mäßig noch ziemlich neu und komme irgendwie nicht weiter bei meinem folgenden Problem.
Vereinfacht sieht es so aus:

1. Tabelle "Kunden" mit den Feldern id, Name, Vorname
2. Tabelle "Wohnorte" mit den Feldern id, id_Kunde, Plz, Ort

Ich benötige ein Query, dass die Anzahl der Kunden je Ort ausgeben würde, also

Hamburg 3
Berlin 2
München 7

Irgendwie bekomm ich es mit der SQL-SYNTAX nicht hin :-(((

Vielleicht hat ja einer von Euch SQL-Profis einen Typ für mich ?
Heißen Dank im Voraus und schönes Wochenende :)

Sqweezer
 
Hi

Anscheinend kann ein Kunde in deiner DB mehrere Wohnorte haben (außer id_Kunde hat ein Unique, in dem Fäll wäre die andere ID der Tabelle sinnlos). Daher ist zu beachten, dass ein Kunde ggf. für alle seine Orte gezählt wird.

in Schritten:

SQL:
SELECT * FROM Kunden
(sollte klar sein)

SQL:
SELECT * FROM Kunden k, Wohnorte w WHERE k.id = w.id_kunde
Jeder Kunde mit seinem Wohnort. Das Where ist nötig, um nicht jeden Kunden mit jedem Ort zu kombinieren, was die DB normalerweise machen würde wenn man zwei Tabellen angibt. Das k und w ist dafür da, weil es in beiden Tabellen gleichnamige Spalten gibt (damit klar ist, aus welcher Tabelle man welche Spalte will. Hier speziell wegen k.id).

Btw. die gleiche Abfrage wäre in einer anderen Schreibweise (Join) auch möglich. Und falls es einen Kunden mit mehreren Orten gibt bekommt man für den mehrere Ausgabezeilen.

SQL:
SELECT ort FROM Kunden k, Wohnorte w WHERE k.id = w.id_kunde
Nur noch den Ort ausgeben...

SQL:
SELECT ort,count(*) FROM Kunden k, Wohnorte w WHERE k.id = w.id_kunde GROUP BY ort
...und jetzt gruppieren, und als weitere Ausgabe eben die Anzahl angeben.
Btw. "GROUP BY 1" wäre auch möglich, 1 steht für die erste Ausgabespalte (also hier ort)
 

Neue Beiträge

Zurück