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.
ERRADO
As colunas são iguais porém receberam apelidos diferentes.
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.