Manu: SQL: Problem bei query...

Hallo zusammen,

irgendwie stehe ich gerade auf dem Schlauch (obs am Wetter liegt oder ich zu schlecht geschlafen hab, kann ich nicht sagen), ich habe folgendes Problem:

Neben einer USer-Tabelle, in der die Benutzer mit Gruppenzugehörigkeit aufgeführt sind, habe ich noch eine Tabelle Gruppen. Die Gruppen möchte ich nun auflisten (komplett, inkl. Gruppen, in denen sich keine USer befinden) und mache eine Abfrage über die Table Gruppen und User:

SELECT g.id,g.name,count(u.*) FROM groups g, users u WHERE u.group_id=g.id group by g.id,g.name

Natürlich werden nur die Gruppen aufgelistet, in denen sich auch User befinden. Wie bekomme ich es nun hin, dass eine Gruppe, die gerade angelegt wurde (und dementsprechend leer ist) mit aufgelistet wird (mit count:0 latürnich)... wie gesagt..stehe gerade auf dem Schlauch...oO

  1. Hello,

    indem du von der impliziten auf die explizite JOIN-Syntax ausweichst und einen LEFT JOIN verwendest, vgl. die verlinkten Artikel zu Joins.

    MfG
    Rouven

    --
    -------------------
    Unser Problem ist, dass wir eine Demokratie entwickelt haben, was nicht immer der richtige Weg ist  --  Bernie Ecclestone zu den lästigen Diskussionen um Regeländerungen in der Formel 1
    1. Hallo!

      Danke für den Hinweis, das werde ich direkt mal einsetzen!

  2. Wie bekomme ich es nun hin, dass eine Gruppe, die gerade angelegt wurde (und dementsprechend leer ist) mit aufgelistet wird (mit count:0 latürnich)... wie gesagt..stehe gerade auf dem Schlauch...oO

    http://aktuell.de.selfhtml.org/artikel/datenbanken/joins/#leftright_join

    SELECT  
      id,  
      name,  
      count(users.group_id) AS anzahl  
    FROM groups  
    LEFT JOIN users ON groups.id = users.group_id  
    GROUP BY id
    

    Siechfred

    --
    Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
    1. Danke auch Dir Siechfried, hatte es dann dank des Stichwortes left join herausgefunden...

      Gruß,
      Manu