Inner join com right join

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.

Respostas

20/12/2013

Jefferson Santos

Porque não tenta o simples not exists?
Responder Citar

20/12/2013

Fabiano Carvalho

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
Responder Citar

20/12/2013

Burg

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

Responder Citar

20/12/2013

Fabiano Carvalho

not in é zuado usar, questão de consistencia, not exists a mesma coisa..
mas se quiser só substituir por not exists o not in.
Responder Citar

20/12/2013

Burg

Obrigado Fabiano ! show
Responder Citar

20/12/2013

Jefferson Santos

Resolveu com Not Exists
Responder Citar

20/12/2013

Burg

Pelo que entendi poderia ser com os dois, Obrigado pela dica Jefferson Coutinho dos Santos!
Responder Citar