864 Aufrufe
Gefragt in Datenbanken von
Mahlzeit, ich kämpfe jetzt schon eine ganze Weile mit einem SQL-Befehl, ohne der Lösung des Problems wirklich näher zu kommen.

Ich habe eine Tabelle mit Ländern sowie eine mit Stadien. Bei der Ausgabe sollen nun die Länder und die jeweilige Anzahl von Stadien angezeigt werden. Eigentlich ein Kinderspiel, aber irgendwo muss da ein Fehler versteckt sein.

Hier die SQL-Anweisung:

SELECT man1_countries.*, stadiumnumber FROM man1_countries
LEFT JOIN (SELECT stadiumID, stadiumCountryID, Count(*)AS stadiumnumber FROM man1_stadiums)B ON B.stadiumCountryID = man1_countries.countryID


Ein Auszug aus der Ländertabelle:

countryID countryName countryShort
1 Ägypten eg
2 Äquatorialguinea gq
3 Äthiopien et


Und ein paar Beispielelemente aus der Stadientabelle:

stadiumID stadiumName stadiumCountryID
19 rewirpower-Stadion 34
20 Luzhniki 140
30 Beispielstadion 2


Insgesamt befinden sich in der Stadientabelle 19 Stadien mit der ID 34 (Deutschland), eines mit der ID 140 (Russland) sowie eines mit der ID 2 (Äquatorialguinea). Führe ich oben genannte Anweisung durch, erhalte ich jedoch folgendes Ergebnis:

countryID countryName countryShort stadiumnumber
2 Äquatorialguinea gq NULL
34 Deutschland de 21
140 Russland ru NULL


Die beiden Stadien im Ausland wurden also einfach Deutschland zugewiesen und ich kann mir bislang nicht erklären, wo der Fehler liegt. Schonmal Danke im Vorraus für eure Hilfe.

2 Antworten

0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
SELECT c.countryName
, count( s.stadiumID ) AS Anzahl
FROM countries c LEFT
JOIN stadiums s ON s.stadiumCountryID= c.countryID
GROUP BY c.countryName
0 Punkte
Beantwortet von
Ah, mit Group By klappt es, danke dir. Da hätte ich auch selbst drauf kommen können ...
...