MySQL auch bei COUNT = 0 anzeigen



  • ich habe einen SQL Befehl der mir Verschiedene Daten aus mehreren Tabellen auslist und mir den COUNT über eine zusätzliche Tabelle macht.

    SELECT p.path, c.city, t.termin, a.agegroup, n.name, n.firstname, COUNT(v.ID_pictureofthemonth) as sum 
    FROM pictureofthemonth p, city c, termin t, agegroup a, player n, votepicture v
    WHERE a.ID = p.ID_agegroup AND t.ID = p.ID_termin AND c.ID = p.ID_city AND p.ID_player = n.number AND p.ID=v.ID_pictureofthemonth 
    GROUP BY p.ID
    

    Dieses Select Funktioniert bis auf wenn kein Eintrag in v entahlten ist (also COUNT(v) = 0).

    Wie bekomme ich diese Werte noch dazu?

    MfG



  • Also dieses vereinfachte LEFT JOIN hat genau den Effekt

    SELECT p.path, COUNT(v.ID_pictureofthemonth)
    FROM pictureofthemonth p LEFT JOIN votepicture v ON v.ID_pictureofthemonth = p.ID 
    GROUP BY p.ID
    

    doch wie bekomme ich jetzt die Anderen Tabellen mit den normalen Joins hin?



  • Sollte doch einfach so gehen, indem du die anderen Tabellen wieder mit rein nimmst und nur "votepicture" per LEFT JOIN verknüpfst?

    SELECT p.path, c.city, t.termin, a.agegroup, n.name, n.firstname, COUNT(v.ID_pictureofthemonth) as sum 
    FROM pictureofthemonth p, city c, termin t, agegroup a, player n
    LEFT JOIN votepicture v ON v.ID_pictureofthemonth = p.ID 
    WHERE a.ID = p.ID_agegroup AND t.ID = p.ID_termin AND c.ID = p.ID_city AND p.ID_player = n.number AND p.ID = v.ID_pictureofthemonth 
    GROUP BY p.ID
    

    "sum" als Spalten-Alias ist übrigens ziemlich böse 😉 Aber MySQL scheint es ja zu fressen.



  • Cpp_Junky schrieb:

    "sum" als Spalten-Alias ist übrigens ziemlich böse 😉 Aber MySQL scheint es ja zu fressen.

    Sum ist kein reserviertes Wort. Er muß halt nur höllisch aufpassen dass er kein Leerzeichen zwischen Sum und der Klammer macht wenn er die Funktion meint. 😃


Anmelden zum Antworten