dedlfix: MySQL SUM mit GROUP Problem

Beitrag lesen

Tach!

ich habe folgende Abfrage und möchte nun als Ergbenis noch eine Komplettsumme. Wie ist das möglich?

SELECT SUM(artikel_attribut_lager.menge)*ek FROM artikel_attribut
LEFT JOIN artikel_attribut_lager ON artikel_attribut_lager.atrnr=artikel_attribut.atrnr
GROUP BY artikel_attribut.atrnr

Momentan ist es so, dass jede atrnr in einer eigenen Zeile steht. Nun möchte ich aber, dass diese einzelnen Beträge addiert werden.

Es gibt den Group-By-Modifizierer WITH ROLLUP.

Wenn ich hinten das Group by entferne, stimmt das Ergebniss nicht. Ich vermute hier, dass es an dem LEFT JOIN liegt, weil es hier die atrnr mehrfach gibt.

Lass die Aggregatfunktion und das Gruppieren zur Ursachenanalyse weg und schau dir an, ob die Zeilen in der Ergebnismenge diejenigen sind, die du erwartest.

Meine persönliche Vorliebe wäre auch, den Join durch eine Correlated Subquery auszutauschen. Du möchtest ja keine vereinte Datenmenge haben, sondern nur zu den Zeilen der einen Tabelle einen korrelierenden Wert aus einer anderen Tabelle haben. Für mich liest sich solch ein Statement auch einfacher, weil es die Intention besser herüberbringt. Die Subquery steht an genau einem Ort und verteilt sich nicht über SELECT und FROM (und WHERE, wenn man die implizite Join-Schreibweise nimmt).

SELECT a.x aliasX, (SELECT y FROM b WHERE a.id = b.id_a) aliasY FROM a WHERE ... -- (falls benötigt)

dedlfix.