SUM in WHERE CLAUSE
Gerd G.
- datenbank
Hallo,
ich möchte eine Abfrage machen und habe hier ein Problem:
SELECT partners.id, partners.domain
FROM partners, p_klick, p_rechnung
WHERE partners.id=p_klick.partner_id AND p_klick.partner_id=p_rechnung.partner_id AND p_rechnung.status='1' AND p_rechnung.typ='0' AND SUM(p_rechnung.anzahl)>SUM(p_klick.klicks)
GROUP BY partners.id
ORDER BY RAND()
LIMIT 1
Ich möchte, dass mir eine zufällige partner-id ausgegeben wird. So wie ich die ABfrage gemacht habe ist es nicht möglich aber ich denke, dass ihr versteht was ich möchte. DAs Problem liegt bei WHERE.....SUM()>SUM()
Wie kann ich das lösen?
n'abend,
Wie kann ich das lösen?
Die WHERE-Klausel wird auf die noch nicht gruppierten Daten angewandt, die HAVING-Klausel hingegen auf die gruppierten.
Du möchtest also mal versuchen dein SUM()>SUM() in die HAVING-Klausel zu verbannen; etwa so:
SELECT p.id, p.domain
FROM partners p,
p_klick k,
p_rechnung r
WHERE p.id = k.partner_id
AND k.partner_id = r.partner_id
AND r.status = '1'
AND r.typ = '0'
GROUP BY p.id
HAVING SUM( r.anzahl ) > SUM( k.klicks )
ORDER BY RAND()
LIMIT 1;
weiterhin schönen abend...
weiterhin schönen abend...
Danke! Wünsche ich dir auch. Funktioniert einwandfrei. Hatte das mit Having komplett vergessen. Das kommt davon, dass man es nicht so häufig verwendet.
yo,
Funktioniert einwandfrei. Hatte das mit Having komplett vergessen. Das kommt davon, dass man es nicht so häufig verwendet.
leider funktioniert deine abfrage noch nicht einwandfrei, da du spalten (partners.domain) mit ausgibst, über die du nicht gruppiert hast. nur mysql meckert dabei nicht, was es aber sollte, ansonsten ist das ergebnis "zufällig"
Ilja