Problema de LEFT OUTER JOIN (dá linhas extras)
Eu tenho duas tabelas que eu quero juntar usando uma junção externa esquerda. No entanto, embora minha tabela esquerda contenha apenas valores exclusivos, a tabela correta satisfaz a CONDITION mais de uma vez e, como tal, adiciona linhas extras ao conjunto de resultados.
Código para replicar o problema:
declare @tb1 table (c1 int) declare @tb2 table (c2 int) INSERT INTO @tb1 VALUES (1) INSERT INTO @tb1 VALUES (2) INSERT INTO @tb1 VALUES (3) INSERT INTO @tb1 VALUES (4) INSERT INTO @tb2 VALUES (3) INSERT INTO @tb2 VALUES (4) INSERT INTO @tb2 VALUES (5) INSERT INTO @tb2 VALUES (6) select * from @tb1 left outer join @tb2 ON c1 = c2 INSERT INTO @tb2 VALUES (3) INSERT INTO @tb2 VALUES (4) INSERT INTO @tb2 VALUES (5) INSERT INTO @tb2 VALUES (6) select * from @tb1 left outer join @tb2 ON c1 = c2
Como você pode ver, o primeiro SELECT retorna 4 linhas, onde o segundo SELECT 6, embora a tabela da esquerda permaneça inalterada.
Como alguém fica estrito na tabela da esquerda, e só usa a tabela da direita para COMPLEMENTAR as linhas da tabela da esquerda?
SOCORRO!
RESULTS: c1 c2 ----------- ----------- 1 NULL 2 NULL 3 3 4 4 [DUPLICATE @tb2 records] c1 c2 ----------- ----------- 1 NULL 2 NULL 3 3 3 3 4 4 4 4