Hab mal wieder ein Problem mit GROUP BY, COUNT und LEFT JOIN
Folgender Query:
Ich möchte zu jedem Werber die Anzahl der Refs die zwischen $start und $ende geworben wurden. Es zählen jedoch nur Refs die zwischen $start und $ende an min. $min Aktionen teilgenommen haben.
liefert mir:
werber = 1
menge = 2
Dabei hat werber 1 nur 1 Ref geworben (der hat allerdings an 2 Aktionen teilgenommen)
Folgender Query:
Code:
SELECT mitglieder.werber, COUNT(mitglieder.id) AS menge, COUNT(teilnahmen.id) AS teilnahmen FROM
mitglieder
LEFT JOIN teilnahmen ON teilnahmen.uid=mitglieder.id AND teilnahmen.zeit >= '.$start.' AND teilnahmen.zeit <= '.$ende.'
WHERE mitglieder.status="aktiv" AND mitglieder.werber > 0 AND mitglieder.registrierung >= '.$start.' AND mitglieder.registrierung <= '.$ende.'
GROUP BY teilnahmen.uid, mitglieder.werber
HAVING teilnahmen >= '.$min.'
ORDER BY menge DESC LIMIT 10
liefert mir:
werber = 1
menge = 2
Dabei hat werber 1 nur 1 Ref geworben (der hat allerdings an 2 Aktionen teilgenommen)