2 Tabellen, Zuordnung mit der jeweiligen Anzahl (mysql)
Katrin
- datenbank
0 Alexander (HH)0 Katrin0 Vinzenz Mai0 dedlfix
Ich habe zwei Tabellen in der einen steh eine ID und die Namen der Städte:
ID CITY
--------------------- Tabelle1
1 Berlin
2 Hamburg
3 Bremen
4 Cuxhafen
in der zweiten Tabelle gibt es mehrere Werte aber auch eine Zuordnung zu der esrten Tabelle, nämlich die City ID
CITY-ID NAME BERUF
---------------------------- Tabelle2
1 Schmidt Arzt
1 Huber Bauarbeiter
1 vanGoch Pinsler
2 Müller Fussballspieler
ich möchte nun eine Liste ausgaben in der alle Städe aus Tabelle 1 angeführt sind, und dazu wieviele Einträge es dazu in Tabelle 2 gibt.
SELECT a.id, a.titel
FROM Tabelle1 a
So bekomme ich eine Liste alle Einträge aus Tabelle 1
Aber wie bekomme ich auch noch die Anzahl der Einträge dazu?
Katrin
Moin Moin!
ich möchte nun eine Liste ausgaben in der alle Städe aus Tabelle 1 angeführt sind, und dazu wieviele Einträge es dazu in Tabelle 2 gibt.
Fang anders herum an: Finde heraus, wie oft jede Stadt-ID in der zweiten Tabelle vorkommt (COUNT(*) in Kombination mit GROUP BY), dann verknüpfe das Ergebnis (ID und Anzahl) mit der Städtetabelle (JOIN).
Alexander
Aber was passiert wenn eine Stadt nicht vorkommt, also NULL wird sie dann abgzeigt, oder einfach verschluckt???
Hallo,
Aber was passiert wenn eine Stadt nicht vorkommt, also NULL wird sie dann abgzeigt, oder einfach verschluckt?
Verwende einen LEFT JOIN. Gegebenenfalls außerdem noch COALESCE(), um Dir 0 statt NULL zurückgeben zu lassen.
Freundliche Grüße
Vinzenz
Hi!
Aber was passiert wenn eine Stadt nicht vorkommt, also NULL wird sie dann abgzeigt, oder einfach verschluckt?
Verwende einen LEFT JOIN. Gegebenenfalls außerdem noch COALESCE(), um Dir 0 statt NULL zurückgeben zu lassen.
Statt eines Joins kann auch eine korrelierte Subquery verwendet werden. Sie steht dann in der SELECT-Klausel als eines der Felder und zählt die Dinge in Tabelle 2, deren City-ID der ID von Tabelle1 entspricht. Dann kommt auch garantiert und zu jeder Stadt eine Zahl raus, und sei sie 0.
Lo!
Hallo,
Statt eines Joins kann auch eine korrelierte Subquery verwendet werden. Sie steht dann in der SELECT-Klausel als eines der Felder und zählt die Dinge in Tabelle 2, deren City-ID der ID von Tabelle1 entspricht. Dann kommt auch garantiert und zu jeder Stadt eine Zahl raus, und sei sie 0.
abgesehen davon ist die Subquery verständlicher als der Join :-)
Freundliche Grüße
Vinzenz