Problem mit 2-fach LEFT JOIN unter MySQL

redlama

Erfahrenes Mitglied
Hallo!

Ich habe ein Problem, für das ich eine Lösung suche und bräuchte dabei ein wenig Hilfe!
Ich habe folgenden Query:
Code:
SELECT cl.*, count(lin.id) as count, 
COUNT(CASE WHEN bo.xx = '0' THEN bo.id ELSE NULL END) AS count_rem0, 
COUNT(CASE WHEN bo.xx = '1' THEN bo.id ELSE NULL END) AS count_rem1, 
COUNT(CASE WHEN bo.xx = '2' THEN bo.id ELSE NULL END) AS count_rem2 
FROM wx AS cl 
LEFT JOIN xy AS bo ON (cl.id = bo.zz) 
LEFT JOIN yz AS lin ON (cl.id = lin.zz)  
		WHERE ((cl.ww='1')) 
		 GROUP BY cl.id
		 ORDER BY cl.id ASC
		LIMIT 0,100
Dabei ergibt sich jetzt ein Problem, das ich anhand eines Beispiels zeigen will:
count liefert mir die Anzahl der Logins eines Kunden zurück. In meinem Beispiel bekomme ich den Wert 595 zurück.
count_rem0, count_rem1 und count_rem2 liefern mir die Anzahl der Buchungen eines Kunden anhand bestimmter Kriterien (bo.xx).
In meinem Beispiel bekomme ich die Werte 210, 5 und 380.

Also habe ich
count = 595
count_rem0 = 210
count_rem1 = 5
count_rem2 = 380

Jetzt zu meinem Problem. Ich weiß, dass der Wert count eigentlich nur 5 ist (separate Abfrage per phpMyAdmin). Und die anderen Werte sind eigentlich 42, 1 und 76.

42 + 1 + 76 = 119
119 * 5 = 595
210 + 5 + 380 = 595

Das Problem besteht also darin, dass bei den LEFT JOINs die jeweiligen Werte miteinander multipliziert werden.

Kann ich den Query irgendwie abwandeln, sodass ich die korrekten Werte bekomme?
Ich hatte schon überlegt den Query in 3 Abfragen zu splitten, aber da hängt eine Umprogrammierung des kompletten Scriptes dran und wäre nur der allerletzte Ausweg.

Weiß jemand einen Rat?
 
Ich hatte ein ähnliches Problem. Bei mir waren dann die Daten aus dem JOIN identisch, deshalb konnt ich es einfach mit dem DISTINCT Befehl nach dem select lösen. Vielleicht hilft dir das.
 

Neue Beiträge

Zurück