Inner join com right join

20/12/2013

0

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

Responder

Posts

20/12/2013

Jefferson Santos

Porque não tenta o simples not exists?
Responder

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

20/12/2013

Lucas Burg

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

Responder

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

20/12/2013

Lucas Burg

Obrigado Fabiano ! show
Responder

20/12/2013

Jefferson Santos

Resolveu com Not Exists
Responder

20/12/2013

Lucas Burg

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

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar