Ich habe die folgenden 4 Tabellen.MYSQL Left-Join Tabelle Auswählen von Daten Problem - Logischer Fehler
1. DEBATES.
[ID, STARTER_PACK_ID]
2. DEBATE_GROUPS.
[ID, DEBATE_ID, STAKEHOLDER_ID]
3. DEBATE_STAKEHOLDERS.
[ID, STARTER_PACK_ID, NAME]
4. DEBATE_STARTER_PACKS.
[ID]
Ich versuche, jede Debatte Gruppe zu wählen, mit jeder Stakeholder-ID, Namen der Stakeholder-ID und der Zählung dieser Stakeholder zu dieser Debatte, wo der starter_pack_id eine gewisse Werte gleich. Zum Beispiel haben diese gezeigt werden, auch wenn die Zahl 0 oder NULL-Werte vorhanden sind
Das erwartete Ergebnis dieser wird wie folgt ..
DEBATE_ID | STAKEHOLDER_ID | COUNT(Example)
-------------------------------------------
1 1 2
1 2 1
1 3 3
2 1 4
2 2 1
2 3 2
Das Problem ist, dass es isn‘ t zeigt die Debatten, die nicht verwendet wurden in der Datenbank, die ich benötigte. Was muss ich im folgenden Code ändern, um diese Informationen abzurufen?
Unten ist mein Versuch ...
SELECT
a.id,
a.name,
a.abbreviation,
b.debate_id,
IF(COUNT(b.stakeholder_id) = 0, 0, COUNT(b.stakeholder_id)) AS total_freq,
COUNT(b.stakeholder_id) AS freq
FROM
debate_stakeholders a LEFT JOIN debate_groups b ON b.stakeholder_id = a.id
GROUP BY
a.id, b.debate_id
HAVING
COUNT(*) < 3
ORDER BY
a.id,b.debate_id,b.stakeholder_id