Array
(
)

Inner join com right join

Burg
   - 20 dez 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.

Jefferson Santos
   - 20 dez 2013

Porque não tenta o simples not exists?

Faabiianooc
   - 20 dez 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

Burg
   - 20 dez 2013

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

Faabiianooc
   - 20 dez 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.

Burg
   - 20 dez 2013

Obrigado Fabiano ! show

Jefferson Santos
   - 20 dez 2013

Resolveu com Not Exists

Burg
   - 20 dez 2013

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