Faddin: Kniffliges Problem - LEFT JOIN

Beitrag lesen

der grundsatz, den du mit deiner abfrage verletzt hast, ist, alle spalten, die angezeigt werden sollen und keine aggregat-funktionen sind, müssen auch in die group by klausel.

  
SELECT p.id, p.domain, r.link, SUM( COALESCE( v.views ) ) , COUNT( DISTINCT (  
r.anzahl  
) ) , SUM( r.anzahl )  
FROM partners p  
LEFT JOIN p_rechnung r ON p.id = r.partner_id  
LEFT JOIN p_view v ON p.id = v.partner_id  
WHERE r.status = '1'  
AND r.typ = '1'  
GROUP BY p.id, p.domain, r.link  
HAVING SUM( r.anzahl ) > SUM( COALESCE( v.views ) )  
ORDER BY RAND( )  
LIMIT 1  

So sollte es also richtig gruppiert sein?

COUNT( DISTINCT (
r.anzahl
) ) zeigt jetzt aber 1 an obwohl es 3 sein müssten...

Zu Unterabfragen: damit meinst du "SELECT ... FROM ... WHERE r.partner_id = p.id AND ...."

Damit hatte ich das auch schon versucht. Leider erhalte ich garkein Ergebnis, wenn in der Tabelle p_view kein Datensatz vorhanden ist.