Gerd G.: SUM in WHERE CLAUSE

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?

  1. 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...

    --
    Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
    sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
    1. 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.

      1. 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