Inner join com right join

SQL Server

20/12/2013

Pessoal preciso da ajuda de vcs

minha situação e a seguinte

tenho 3 tabelas A, B, C

As três tem o campo documento em comum.

Eu preciso saber o que tem A, B e não esta em C
e o que tem em C que não tem em A, B

Query para trazer o que não tem em C

SELECT A.documento
FROM ((A INNER JOIN B ON A.documento = B.documento)
LEFT JOIN C ON B.documento = C.documento)
WHERE C.documento IS null;

Tentei RIGHT JOIN mais mais não deu certo

desde já agradeço.
Lucas Burg

Lucas Burg

Curtidas 0

Respostas

Jefferson Santos

Jefferson Santos

20/12/2013

Porque não tenta o simples not exists?
GOSTEI 0
Fabiano Carvalho

Fabiano Carvalho

20/12/2013

select * from c
right join (select a.*,b.documento from a inner join b on a.documento = b.documento) as d
on a.documento = d.documento
where c.documento is null

E

select * from c
left join (select a.*,b.documento from a inner join b on a.documento = b.documento) as d
on a.documento = d.documento
where d.documento is null
GOSTEI 0
Lucas Burg

Lucas Burg

20/12/2013

Opa, consegui resolver com NOT IN, como eu faço para usar EXISTS ? pode me mostrar

GOSTEI 0
Fabiano Carvalho

Fabiano Carvalho

20/12/2013

not in é zuado usar, questão de consistencia, not exists a mesma coisa..
mas se quiser só substituir por not exists o not in.
GOSTEI 0
Lucas Burg

Lucas Burg

20/12/2013

Obrigado Fabiano ! show
GOSTEI 0
Jefferson Santos

Jefferson Santos

20/12/2013

Resolveu com Not Exists
GOSTEI 0
Lucas Burg

Lucas Burg

20/12/2013

Pelo que entendi poderia ser com os dois, Obrigado pela dica Jefferson Coutinho dos Santos!
GOSTEI 0
POSTAR