SQL Join Tables
-
Hallo Community,
ich habe ein kleines Problem was eine SQL Abfrage betrifft.
Die Verbindung sieht momentan so aus: http://i.imgur.com/xJBeuDJ.pngIch habe einen Kundenstamm mit allen Kunden. UmsatzSollVJ enthält Umsätze aus dem vorherigen Jahr und AJ die aus dem aktuellen Jahr. Es haben dort nur Kunden Umsätze, die auch in der Kundenstamm Tabelle sind.
Mir ist jedoch aufgefallen, dass ich in meinem Bericht zwar Umsätze von beiden Jahre für einen Kunde sehe, allerdings wenn es einen neuen Kunden gibt, hat dieser logischerweise keine Umsätze aus dem Vorjahr und er taucht in der Auswertung überhaupt nicht auf. Es wird also auch kein Umsatz für das aktuelle Jahr angezeigt.
Mein SQL-FROM sieht so aus:
FROM (AbKundenstamm LEFT JOIN UmsatzSollVJ ON AbKundenstamm.Kundennummer = UmsatzSollVJ.Kontonummer) LEFT JOIN UmsatzSollAJ ON AbKundenstamm.Kundennummer = UmsatzSollAJ.Kontonummer
Wäre schön, wenn mich jemand auf die richtige Bahn lenken könnte.
Mit freundlichen Grüßen
-
SQL Spezialist schrieb:
Mir ist jedoch aufgefallen, dass ich in meinem Bericht zwar Umsätze von beiden Jahre für einen Kunde sehe, allerdings wenn es einen neuen Kunden gibt, hat dieser logischerweise keine Umsätze aus dem Vorjahr und er taucht in der Auswertung überhaupt nicht auf. Es wird also auch kein Umsatz für das aktuelle Jahr angezeigt.
Laut dem Auszug aus deinem FROM (ich persönlich würde die Klammerung ebenso entfernen, wie ich kürzere Aliasnamen statt den Tabellennamen nutzen würde) sollte dies eigentlich nicht so sein.
FROM AbKundenstamm kunde LEFT JOIN UmsatzSollVJ sollVJ ON kunde.Kundennummer = sollVJ.Kontonummer LEFT JOIN UmsatzSollAJ sollAJ ON kunde.Kundennummer = sollAJ.Kontonummer
Was du uns aber komplett vorenthältst sind WHERE-Klauseln. Wenn dort eine der Tabellen auftaucht die du hier optional joinst, kann es leicht passieren das aus dem LEFT JOIN ein INNER JOIN wird.