Eu tenho uma junção externa esquerda muito básica para retornar todos os resultados da tabela esquerda e algumas informações adicionais de uma tabela muito maior. A tabela da esquerda ainda contém 4935 registros. Quando eu deixei o JOIN em uma tabela adicional, a contagem de registros é significativamente maior.
Até onde eu sei, é um evangelho absoluto que um LEFT OUTER JOIN retornará todos os registros da tabela da esquerda com registros correspondentes da tabela da direita e valores nulos para qualquer linha que não possa ser correspondida; portanto, é meu entendimento que deve será impossível retornar mais linhas do que as existentes na tabela esquerda, mas isso está acontecendo da mesma forma!
A consulta SQL segue:
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
Talvez eu tenha cometido um erro na sintaxe ou meu entendimento de LEFT OUTER JOIN esteja incompleto, espero que alguém possa explicar como isso pode estar ocorrendo?
Postscript
Obrigado pelas ótimas respostas, meu entendimento de LEFT OUTER JOINS agora é muito melhor. Alguém poderia sugerir uma maneira de modificar essa consulta para que eu receba o máximo de registros retornados na tabela à esquerda?
Essa consulta é puramente para gerar um relatório e as correspondências duplicadas simplesmente confundem as coisas.
/ Postscript