1
resposta

Seria possível usar FULL JOIN nesse caso?

Bom dia, resolvi o exercício da seguinte forma:

SELECT c.id_cliente, c.Nome, t.Telefone
FROM TabelaClientes AS c
FULL JOIN TabelaTelefones AS t ON c.id_cliente = t.id_cliente;

Esta solução também seria válida?

Grato desde já pela ajuda.

1 resposta

Oii, Gabriel!
Que legal ver você explorando as diferentes variações das cláusulas de junção.

Para responder sua pergunta de forma direta: sua solução funciona para este exercício específico, mas há um detalhe importante sobre o comportamento do FULL JOIN que você deve considerar.

Diferença entre LEFT JOIN e FULL JOIN:

No SQL, a escolha do JOIN determina quais registros "sobrarão" no resultado final quando não houver uma correspondência exata entre as tabelas.

  • LEFT JOIN (Sugestão do instrutor): Garante que todos os clientes da TabelaClientes apareçam. Se um cliente não tiver telefone, os campos da TabelaTelefones virão vazios.
  • FULL JOIN (Sua solução): Faz o que o LEFT JOIN faz, mas também adiciona o oposto. Ele traria todos os clientes sem telefone e também todos os telefones que não possuem um cliente associado.

Por que sua solução é válida aqui?

No cenário deste exercício, é provável que não existam números de telefone "órfãos" (telefones cadastrados sem um id_cliente correspondente). Por isso, o resultado visual da sua consulta será idêntico ao do instrutor.

id_clienteNomeTelefone
CL01Lucas Silva11987654321
CL03Roberto LimaNULL

O que observar no dia a dia:

Embora o código execute sem erros, o uso do FULL JOIN em grandes bancos de dados pode ser menos comum por dois motivos:

  1. Registros inesperados: Se houvesse um telefone perdido no banco com um id_cliente que não existe mais na tabela de Clientes, ele apareceria no seu relatório com o nome do cliente como NULL.
  2. Processamento: O FULL JOIN exige que o banco de dados verifique as duas tabelas por completo em busca de lacunas, o que consome um pouco mais de recursos do que o LEFT JOIN.

Sua lógica está correta para o objetivo de não perder nenhum cliente. Continue testando essas variações, pois entender como o SQL lida com dados ausentes é um diferencial enorme na análise de dados.

Conteúdos relacionados
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!