Questão de Banco de Dados — SQL — CESPE / CEBRASPE 2023
- Código
- ce161067
- Banca
- CESPE / CEBRASPE
- Órgão
- SERPRO
- Ano
- 2023
- Nível
- Superior
- Cargo
- Analista - Especialização: Tecnologia
- CCerto
- EErrado
GabaritoC — Certo
Gabarito: ✅ CERTO. A afirmativa está correta porque, embora o LEFT JOIN por si só retorne todos os clientes (inclusive os que nunca fizeram pedidos), é perfeitamente válido utilizar a cláusula LEFT JOIN em conjunto com uma condição WHERE que filtre os registros nulos da tabela pedidos, obtendo exatamente os clientes que já realizaram pedidos. A banca considera que a afirmação "é correto usar o comando SELECT em conjunto com a cláusula LEFT JOIN" é verdadeira, pois essa construção é uma das formas possíveis de atingir o resultado desejado.
A questão testa o conhecimento sobre junções em SQL, especialmente a diferença entre INNER JOIN e LEFT JOIN. O candidato pode ser levado a pensar que apenas o INNER JOIN é adequado, mas o LEFT JOIN com filtro também resolve.
INNER JOIN: retorna apenas os registros que possuem correspondência em ambas as tabelas. Se a intenção é listar clientes que já fizeram pedidos, essa é a abordagem mais direta.
LEFT JOIN: retorna todos os registros da tabela esquerda (clientes) e, quando houver correspondência, os dados da tabela direita (pedidos). Para os clientes sem pedidos, os campos de pedidos ficam NULL.
LEFT JOIN + WHERE: aplicando WHERE pedidos.id IS NOT NULL, eliminam-se os clientes sem pedidos, obtendo-se o mesmo resultado de um INNER JOIN.
Portanto, a afirmação está correta; é possível usar LEFT JOIN para esse fim, desde que complementado com a cláusula WHERE adequada.
Na prova, desconfie de afirmações que dizem "é correto usar LEFT JOIN" para retornar apenas registros correspondentes. Lembre-se de que LEFT JOIN mais WHERE com IS NOT NULL equivale a INNER JOIN. Se a questão cobrar a forma mais eficiente ou a mais direta, prefira INNER JOIN. Mas a afirmação de que é possível usar LEFT JOIN é verdadeira.
Exemplo:
SELECT c.nome, c.endereco
FROM clientes c
LEFT JOIN pedidos p ON c.id = p.cliente_id
WHERE p.id IS NOT NULL;Gabarito: ✅ CERTO.
Link permanente: /questoes/ce161067