Johnny B.: [mySQL] LEFT JOIN - WITH ROLLUP rechnet nicht zusammen

Beitrag lesen

Hallo Vinzenz,

ok, das kaputte SQL läßt darauf schließen, dass Du mit extrem hoher Wahrscheinlichkeit MySQL verwendest, weil jedes vernünftige Datenbankmanagementsystem statt eines Ergebnisses eine Fehlermeldung zurückliefert.

ja, richtig geraten ;-) (siehe Thread-Titel). Aber wieso kaputtes SQL?

weil Du auf Kosten keine Aggregatsfunktion anwendest und auch nicht danach gruppierst.

Ich dachte die unteren Gruppierungen und das Rollup würden sich auf das SELECT und auch den LEFT JOIN beziehen.

Meine Probleme sind damit aber nicht vorbei. Zuerst habe ich festgestellt, daß, wenn zwei Einträge in ´kosten´ für dasselbe Datum bestehen, diese nicht zusammengerechnet werden.

Dann habe ich entdeckt, daß die Berechnung der Clicks auch nicht mehr stimmt, sobald mehrere Einträge in ´kosten´ für ein Datum bestehen. Bei zwei Einträgen zählt er die Clicks doppelt, bei drei Einträgen dreifach.

Daher vermute ich, daß mein grundlegender Ansatz vielleicht falsch ist.

SELECT  DATE_FORMAT( statistik.datum, '%d.%m.%Y') Date,  
        COUNT(CASE WHEN typ = 'C' THEN 1 ELSE NULL END) Clicks,  
        (   SELECT SUM(summe)  
            FROM kosten  
            WHERE kosten.datum = statistik.datum $aktion_id_passt  
        )                                               Kosten  
FROM statistik

...

Nun war ich grad so stolz, meinen ersten LEFT JOIN ohne fremde Hilfe eingesetzt zu haben - und nun fliegt mir hier alles um die Ohren.

Was ich will:
1. zähle in Tabelle ´statistik´ alle Vorkommen des Typ 'C' gruppiert zu einem Datum zusammen
2. rechne in Tabelle ´kosten´ alle Vorkommen von ´summe´ gruppiert zu einem Datum zusammen
3. gebe beides zusammen in einer Tabelle aus

Sollte ich da besser mit UNION arbeiten?

Besten Gruß
JOhnnY