A partir do código SQL (Structured Query Language) acima, ju...
SELECT d.nome, d.data_contratacao, c.nome, c.data_contratacao
FROM dentista d JOIN dentista c
ON (d.cro_chefe = c.cro)
WHERE d.data_contratacao < c.data_contratacao;
A partir do código SQL (Structured Query Language) acima, julgue o item subsecutivo.
A construção d.data_contratacao < c.data_contratacao está incorreta, pois não se pode utilizar um operador
relacional entre colunas iguais.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: E - Errado
Ao analisarmos a consulta SQL apresentada, percebemos que ela se destina a realizar uma operação de JOIN entre duas instâncias da tabela dentista. Essa operação é perfeitamente válida e é uma técnica comum em SQL para relacionar tabelas - ou como neste caso, a mesma tabela com ela mesma - baseando-se em um critério de junção, que é indicado logo após a cláusula ON.
No contexto desta consulta, a condição d.cro_chefe = c.cro está associando o campo cro_chefe de um dentista (alias d) com o campo cro de outro dentista (alias c). Essa é uma forma de identificar um dentista que é chefe de outro dentro da mesma tabela, supondo que o campo cro_chefe referencia um cro que pertence a um dentista chefe.
Onde a questão pode causar confusão é na cláusula WHERE, onde temos a condição d.data_contratacao < c.data_contratacao. A assertiva sugere que não se pode usar um operador relacional entre colunas iguais, porém isso é um equívoco. Apesar de as colunas terem o mesmo nome (data_contratacao), elas pertencem a instâncias diferentes da tabela (d e c), o que torna a comparação entre elas não apenas possível, mas também útil para verificar a relação temporal entre as datas de contratação dos dentistas.
Esse tipo de comparação é amplamente usado para encontrar registros que têm uma relação específica com outros registros da mesma tabela, como é o caso do exemplo dado, onde busca-se dentistas que foram contratados antes de seus chefes. Portanto, a construção d.data_contratacao < c.data_contratacao está correta e é uma prática válida em consultas SQL.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
ERRADO
As colunas são iguais porém receberam apelidos diferentes.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo