Anmelden

View Full Version : SQL mit Left outer join



Miles
26-10-16, 12:59
Hallo zusammen,

ich versuche gerade eine SQL mit mehreren Left outer join aber leider funktioniert es nicht richtig?

Wie wäre denn die Richtig Syntax bei mehreren lefts?


SELECT
Datum,
Auftrag,
SUM(POS) ,
SUM(Menge) ,
SUM(OP)
FROM Kalender LEFT OUTER JOIN temp on (Datum=Picked_Datum)
LEFT OUTER JOIN temp2 on (Datum=PEN_Datum)
LEFT OUTER JOIN temp4 on (Datum=OPDatum)


Was ist hier falsch?
Wenn ich diese nach und nach laufen lasse funktioniert es!?

dschroeder
26-10-16, 13:02
Ich glaube, das Problem liegt darin, dass du Felder und Aggregatfunktionen im select Ausdruck mischt. Du müsstes groupen:

SELECT
Datum,
Auftrag,
SUM(POS) ,
SUM(Menge) ,
SUM(OP)
FROM Kalender LEFT OUTER JOIN temp on (Datum=Picked_Datum)
LEFT OUTER JOIN temp2 on (Datum=PEN_Datum)
LEFT OUTER JOIN temp4 on (Datum=OPDatum)
group by Datum, Auftrag

Dieter

Miles
26-10-16, 13:11
Das "Group by" hatte ich nur vergessen dazu zuschreiben, sorry. :-(

Mein Problem ist das sich das Ergebnis vervielfacht!

Fuerchau
26-10-16, 13:19
Dann hast du in den Daten keine 1:1-Beziehung sondern eine 1:N-Beziehung,
Jeder linke Satz wird mit allen Vorkommen der rechten Sätze über die Beziehung verknüpft.
Bei einer 1:N-Beziehung musst du eine 1:1-Beziehung erzwingen:

left join (select xydatum, sum(wert) from myfile group by xydatum) xy on Datum = xyDatum

Miles
26-10-16, 14:40
Vielen DANK Fuerchau!