Mam bardzo podstawowe LEFT OUTER JOIN, aby zwrócić wszystkie wyniki z lewej tabeli i kilka dodatkowych informacji ze znacznie większej tabeli. Lewa tabela zawiera 4935 rekordów, ale kiedy opuściłem OUTER JOIN do dodatkowej tabeli, liczba rekordów jest znacznie większa.
O ile wiem, jest absolutną ewangelią, że LEFT OUTER JOIN zwróci wszystkie rekordy z lewej tabeli z dopasowanymi rekordami z prawej tabeli i wartościami zerowymi dla wszystkich wierszy, których nie można dopasować, jako takie rozumiem, że powinno zwrócenie większej liczby wierszy niż istnieje w tabeli po lewej stronie jest niemożliwe, ale to się dzieje tak samo!
Zapytanie SQL następuje:
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
Być może popełniłem błąd w składni lub moje rozumienie LEFT OUTER JOIN jest niekompletne, mam nadzieję, że ktoś może wyjaśnić, jak to się dzieje?
Postscriptum
Dzięki za świetne odpowiedzi, moje rozumienie LEFT OUTER JOINS jest teraz znacznie lepsze. Czy ktokolwiek mógłby jednak zasugerować sposób zmodyfikowania tego zapytania, aby uzyskać tylko tyle zwróconych rekordów, ile istnieje w lewej tabeli?
To zapytanie służy wyłącznie do wygenerowania raportu, a zduplikowane dopasowania po prostu komplikują sprawę.
/Postscriptum