Zu DB select von Tabelle a eine Summe von Tabelle b hinzufügen

  • In meinem Model soll zu den Einträgen der Tabelle a die Summe der Bilder hinzugefügt werden


    Mein Versuch:


    Der obige JOIN führt dazu, dass aus den Zeilen der ersten Tabelle eine Zeile übrig bleibt und die Summe aller Bilder in der "Variable" image_count steht.


    Ziel: Alle Galerien mit der Anzahl der zugehörigen Bilder als Variablen an den View übergeben
    Bitte helft mir bei der SQL Formulierung

  • $query->select('COUNT(*) as image_count')


    Bin schon müde, aber müsste das nicht so was in der Art sein, damit der COUNT über die 2. Tabelle geht?

    Code
    $query->select('COUNT(img.gallery_id) as image_count')


    oder so was (wie gesagt, müde ;) )

    Code
    $query->select('COUNT(img.*) as image_count')


    Du kannst dir den fertigen Query auch mittels

    Code
    echo print_r((string) $query, true);exit;


    ausgeben lassen. Vielleicht wird's dann offensichtlicher.


    Oder mal relevante Ausschnitte der Tabellen mit Demodaten als Anhang (sql-dump)? Tut man sich leichter...

  • Danke für die Hilfe
    In Verbindung der beiden Antworten ergab sich folgende Lösung:


    (1a) Select tut nicht

    Code
    /* tut nicht */$query->select('COUNT(img.*) as image_count')   ->join('LEFT', '#__rsgallery2_files AS img ON img.gallery_id = a.id');


    (1b) Select tut

    Code
    /* OK */      $query->select('COUNT(img.id) as image_count')          ->join('LEFT', '#__rsgallery2_files AS img ON img.gallery_id = a.id');


    (1c) Select tut

    Code
    /* OK */$query->select('COUNT(img.gallery_id) as image_count')   ->join('LEFT', '#__rsgallery2_files AS img ON img.gallery_id = a.id');


    (2) Folgendes hat gefehlt:

    Code
    $query->group($query->qn('a.id'));


    Nur ein Wermutstropfen bleibt. wenn eine Galerie noch keine Bilder hat bleibt image_count leer d.h. nicht belegt