Katrin: 2 Tabellen, Zuordnung mit der jeweiligen Anzahl (mysql)

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

  1. 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

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
    1. Aber was passiert wenn eine Stadt nicht vorkommt, also NULL wird sie dann abgzeigt, oder einfach verschluckt???

      1. 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

        1. 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!

          1. 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