Hey Leute,
ich steh hier mal wieder vor einem Rätsel. Eigentlich sollte das gar nicht so schwer sein, aber ich bekommst trotzdem nicht hin.
Also der Sinn eines Left Joins ist ja das alle Datensätze der Linken Tabelle ausgegeben werden und diesen ggf. Datensätze der rechten Tabelle zugeordnet werden. Das funktioniert auch soweit. Allerdings nur wenn ich keine WHERE-Clause benutze.
Meine Tabellen sehen wie folgt aus:
TM_fehler (Fehlerarten/Kategorien)
Code:
id | text | ...
1 | bescheribung1 | ...
2 | beschreibung2 | ...
3 | beschreibung3 | ...
TM_calls (diese sollen nach Kategorie gruppiert gezählt werden)
Code:
id | fehlerart | timestamp | ...
1 | 1 | 123456
2 | 1 | 123457
3 | 3 | 123458
4 | 1 | 123459
5 | 1 | 123460
Soweit so gut. So liefert folgender SQL-String genau das Ergebnis was ich erwarte und auch haben will:
Code:
SELECT TM_fehler.text, TM_fehler.id, COUNT( TM_calls.id )
FROM TM_fehler
LEFT JOIN `TM_calls` ON TM_fehler.id = fehlerart
GROUP BY TM_fehler.id
Da bekomme ich das Ergebnis:
Code:
beschreibung1 | 1 | 4
beschreibung2 | 2 | 0
beschreibung3 | 3 | 1
So und jetzt kommt der knackpunkt:
Code:
SELECT TM_fehler.text, TM_fehler.id, COUNT( TM_calls.id )
FROM TM_fehler
LEFT JOIN `TM_calls` ON TM_fehler.id = fehlerart
WHERE TM_call.timestamp = 123457
GROUP BY TM_fehler.id
Liefert das Ergebnis:
Code:
beschreibung1 | 1 | 1
Ich hätte aber gerne folgendes Ergebnis:
Code:
beschreibung1 | 1 | 1
beschreibung2 | 2 | 0
beschreibung3 | 3 | 0
So ich denke ich hab ausführlich genug beschrieben wie mein Problem aussieht. Ich hoffe jemand hat einen Rat für mich
Gruß
Tim