Ich habe einen sehr einfachen LEFT OUTER JOIN, um alle Ergebnisse aus der linken Tabelle und einige zusätzliche Informationen aus einer viel größeren Tabelle zurückzugeben. Die linke Tabelle enthält 4935 Datensätze. Wenn ich sie jedoch einer zusätzlichen Tabelle beitrete, ist die Anzahl der Datensätze erheblich größer.
Soweit mir bekannt ist, ist es ein absolutes Evangelium, dass ein LEFT OUTER JOIN alle Datensätze aus der linken Tabelle mit übereinstimmenden Datensätzen aus der rechten Tabelle und Nullwerten für alle Zeilen zurückgibt, die nicht übereinstimmen können. Daher verstehe ich, dass dies der Fall sein sollte Es ist unmöglich, mehr Zeilen zurückzugeben, als in der linken Tabelle vorhanden sind, aber es passiert trotzdem!
SQL Query folgt:
SELECT SUSP.Susp_Visits.SuspReason, SUSP.Susp_Visits.SiteID
FROM SUSP.Susp_Visits LEFT OUTER JOIN
DATA.Dim_Member ON SUSP.Susp_Visits.MemID = DATA.Dim_Member.MembershipNum
Vielleicht habe ich einen Fehler in der Syntax gemacht oder mein Verständnis von LEFT OUTER JOIN ist unvollständig, hoffentlich kann jemand erklären, wie dies geschehen könnte?
Nachtrag
Vielen Dank für die tollen Antworten. Mein Verständnis von LEFT OUTER JOINS ist jetzt viel besser. Kann jemand jedoch vorschlagen, wie diese Abfrage so geändert werden kann, dass nur so viele Datensätze zurückgegeben werden, wie in der linken Tabelle vorhanden sind?
Diese Abfrage dient lediglich dazu, einen Bericht zu erstellen, und die doppelten Übereinstimmungen verwirren die Sache einfach.
/ Postscript