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.
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.
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.
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.
TabelaClientes apareçam. Se um cliente não tiver telefone, os campos da TabelaTelefones virão vazios.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_cliente | Nome | Telefone |
|---|---|---|
| CL01 | Lucas Silva | 11987654321 |
| CL03 | Roberto Lima | NULL |
Embora o código execute sem erros, o uso do FULL JOIN em grandes bancos de dados pode ser menos comum por dois motivos:
id_cliente que não existe mais na tabela de Clientes, ele apareceria no seu relatório com o nome do cliente como NULL.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.