MySQL: Datensätze der zweiten Tabelle zusammenzählen mit ID aus der ersten

dwex

Erfahrenes Mitglied
Hallo Leute,

ich habe zwei MySQL-Tabellen mit folgenden Überschriften

1. id - listenname - foo - bar

2. id - listen_id - foo - bar - foobar

In einem SELECT wähle ich aus Tabelle 1 die relevanten Datensätze aus (SELECT * FROM `1`)
Das Ergebnis werte ich momentan mit einen PHP-while-Schleife aus und such mir bei jedem Schleifendruchgang die relevanten Datensätze aus der Tabelle 2 raus id (tabelle 1) = listen_id (tabelle 2). anschliessend zähle ich die Datensätze zusammen um die Summe der einzelnen Einträge für jede id aus der Tabelle 1 zu erhalten.

Hier fülle ich ein HTML-Optionsfeld damit.
Ich brauch dazu folgende Werte:
Aus Tabelle 1 id und listenname, aus Tabelle 2 die SUMME der Datensätze gem. listen_id (id aus Tabelle 1).

Meine Frage nun, da man das sicherlich innerhalb einer einzigen DB-Abfrage machen kann:
Gibt es ein SQL-Statement welches mir folgendes Ergebnis liefert:

----------------------------------------------------------------------------------------------------------------------------------
| id (aus Tabelle 1) | listenname (aus Tabelle 1) | SUMME der DS mit id (aus T1) == listen_id |
----------------------------------------------------------------------------------------------------------------------------------
| 1 | Mitgliederliste - Stamm | 35 |
----------------------------------------------------------------------------------------------------------------------------------
| 2 | Mitgliederliste - Clan | 215 |
----------------------------------------------------------------------------------------------------------------------------------

Ich hoffe Ihr könnte mir helfen und bedanke mich für eure Hilfe bereits im voraus.
 
Ein einfacher JOIN mit GROUP BY

SQL:
SELECT
    t1.id,
    t1.listenname,
    -- mit IFNULL() sicherstellen dass richtig gerechnet wird keine Einträge in t2 vorhanden sind
    SUM(IFNULL(t2.ds, 0)) AS sum_of_ds
FROM
    table1 AS t1
    LEFT JOIN table2 AS t2
        ON t1.id = t2.listen_id
GROUP BY
    t1.id,
    t1.listenname
 
Zuletzt bearbeitet von einem Moderator:
Zurück