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.png

    Ich 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.


Anmelden zum Antworten