Uma base possui a tabela servidores, com as colunas id_servi...

Próximas questões
Com base no mesmo assunto
Q4233131 Banco de Dados
Uma base possui a tabela servidores, com as colunas id_servidor, nome e id_setor, e a tabela setores, com as colunas id_setor e nome_setor. Deseja-se listar o nome de cada servidor junto com o nome do respectivo setor, incluindo também os servidores que ainda não possuem setor associado. Qual consulta SQL é mais apropriada?
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: B

Fundamento decisivo: A expressão decisiva é “incluindo também os servidores que ainda não possuem setor associado”, pois ela exige preservar os registros de servidores.

Tema central: Tipos de JOIN
Análise das alternativas
A
Errada
Está errada porque usa INNER JOIN, que retorna apenas os servidores que possuem correspondência em setores. Isso contraria a exigência de incluir também os servidores sem setor associado.
B
Certa
A alternativa B é a adequada porque usa LEFT JOIN a partir de servidores, preservando todos os registros dessa tabela e trazendo nome_setor apenas quando houver correspondência por servidores.id_setor = setores.id_setor.
C
Errada
Está errada por dois motivos concretos: o RIGHT JOIN, na forma apresentada, preserva setores, quando o enunciado exige preservar servidores; além disso, a junção foi feita por servidores.id_servidor = setores.id_setor, condição incompatível com o relacionamento descrito, que é por id_setor.
D
Errada
Está errada porque não faz a junção com a tabela setores, então não produz a associação entre o servidor e o nome do setor pedida na questão. Além disso, o GROUP BY id_setor não resolve essa necessidade nos termos apresentados.
E
Errada
Está errada porque não estabelece JOIN com a tabela setores, embora tente selecionar setores.nome_setor e ordenar por esse campo. Sem a relação entre as tabelas, a consulta não atende ao que foi pedido.
Pegadinha da questão
A confusão real era achar que bastava fazer qualquer JOIN, sem observar que o enunciado exigia manter todos os registros de servidores, inclusive os sem correspondência em setores.
Dica para questões semelhantes
  • Quando o enunciado pedir todos os registros de uma tabela, inclusive sem correspondência, essa é a tabela que deve ser preservada no JOIN.
  • Se a tabela preservada vier à esquerda, o tipo adequado é LEFT JOIN.
  • Antes de validar a consulta, confira se a condição de junção usa a chave relacional indicada no enunciado.
  • Ordenação ou agrupamento não substituem a junção necessária para relacionar dados de duas tabelas.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo