Ajuda para montar query

Bom pessoal, estou enferrujado em montar querys, a maioria dos locais em que trabalhei as querys já chegavam prontas, eu só fazia consultas simples para testar e tal.
Mas agora caiu uma no meu colo, que vou tentar explicar aqui para ver se vcs podem me auxiliar.
Imaginem que as letras sejam entidades e que as setas sejam a/ relações possíveis(joins) para chegar até a entidade mais distante do modelo:

A->B->C->D

Eu quero todos os elementos de A que não tenham qualquer relação com D, sendo que em D eu posso ter 0 ou N elementos de C, e C possa ter 0 ou 1 em D.
Ou seja, quero todos os elementos de A em que C não tenha registro em D.
Alguém arrisca?

E onde entra a entidade B nessa Query?

Somente para atrapalhar, pois só consigo chegar de A à D através desse fluxo passando por todas essas entidades.

Acredito que seja algo assim

SELECT COLUNAS_QUE_TU_QUER FROM A // SELECIONA COLUNAS INNER JOIN B ON A.ID=B.ID //ONDE A ESTEJA RELACIONADO COM B INNER JOIN C ON C.ID = B.ID // E B ESTEJA RELACIONADO COM C WHERE C.ID NOT IN( SELECT ID FROM D); // E C NÃO ESTEJA EM D

[quote=ErickRAR]Acredito que seja algo assim

SELECT COLUNAS_QUE_TU_QUER FROM A // SELECIONA COLUNAS INNER JOIN B ON A.ID=B.ID //ONDE A ESTEJA RELACIONADO COM B INNER JOIN C ON C.ID = B.ID // E B ESTEJA RELACIONADO COM C WHERE C.ID NOT IN( SELECT ID FROM D); // E C NÃO ESTEJA EM D [/quote]

Acho que é por ai sim amigo. Estou seguindo esta linha:


left join c on b.id = c.id
where c.FK_ID_DE_B is null

Tira o “left”, faz conforme o ErickRAR disse

Tive que fazer isso mesmo, pois os atributos eram todos not null, logo o meu ia falhar.

O ErickRAR (e vc) tinham razão.

Obrigado amigos