Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
1
resposta

Equivalência de consultas

Ao realizar o exercício, cheguei a seguinte instrução utilizando LEFT JOIN:
SELECT c.Nome FROM Clientes c LEFT JOIN Pedidos p ON c.ID = p.IDcliente WHERE ID IS NULL;

A resolução do exercício pelo instrutor utilizou o RIGHT JOIN:
SELECT c.Nome FROM Pedidos p RIGHT JOIN Clientes c ON c.ID = p.IDcliente WHERE p.IDcliente IS NULL;

Essas duas resoluções se equivalem?

1 resposta
solução!

Olá, Tomaz! Tudo bom?

Sim, as duas consultas são equivalentes nesse caso.

A diferença está apenas na forma como o JOIN foi escrito. No seu LEFT JOIN, a tabela principal é Clientes, então todos os clientes são mantidos e, quando não existe um pedido correspondente, os campos de Pedidos ficam como NULL. Por isso, WHERE ID IS NULL identifica os clientes sem pedidos, embora seja mais seguro escrever WHERE p.ID IS NULL para deixar claro de qual tabela vem o campo.

No RIGHT JOIN do instrutor, a lógica é invertida. Pedidos aparece primeiro, mas o RIGHT JOIN garante que todos os registros de Clientes sejam mantidos. Quando um cliente não possui pedido, p.IDcliente fica NULL, produzindo o mesmo resultado.

Portanto, sua resolução está correta. A ideia principal é perceber que LEFT JOIN e RIGHT JOIN podem produzir o mesmo resultado quando você apenas inverte a ordem das tabelas e ajusta as condições.

Espero ter ajudado e fico à disposição se precisar.

Abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado