Hi dedlfix,
DISTINCT entfernt mehrfache Zeilen der Ergebnismenge. Ein SUM() liefert nur eine Zeile. Danach kann das DISTINCT nicht mehr viel entfernen.
Heißt also, daß SUM vor DISTINCT ausgeführt wird??
Das kommt ganz drauf an, welche Daten du zusammenrechnen willst und wo diese stehen. Ohne dieses Wissen ist es schwer, sich ein passendes Statement zu überlegen.
Die Werte stehen ausschließlich in t1. Die dazugehörige Anzahl in t3. Auf t3 kannst Du nur über t2 zugreifen, die wiederum über t1 gejoint wird.
Exakt:
t1: MID,Datum,Vorgangsnummer,...
t2: TBID, MID,...
t3: TBID,Menge
t4: EK, MID,...
Ich bräuchte die Summe der EKMenge, also SUM(t4.EKt3.Menge), die zu einer MID gehören. Eigentlich sogar nach MID gruppiert, was aber momentan egal ist.
Der einfachste Fall aus den gegebenen Fakten wäre, das DISTINCT-Statement in ein Subquery zu verlagern und die Summe im äußeren zu bilden.
Gute Idee. Krieg ich, glaub ich, hin.
Schön sieht aber anders aus. Oftmals ist das Verwendenwollen von DISTICT ein Zeichen dafür, dass die Query Verbesserungspotential hat oder die Daten ein Redundanzproblem haben.
Wie gehts denn schöner? Und nein, hier liegt kein Redundanzproblem vor. Ich habe zwar (insgesamt) ein paar Redundanzen eingebaut, aber hier liegt wohl eher keine vor. Häte ich eine, wärs deutlich einfacher. Die Menge z.b. redundant zu führen, hätte das Problem deutlich vereinfacht.
Lukas