A partir do código SQL (Structured Query Language) acima, ju...

Próximas questões
Com base no mesmo assunto
Q824812 Banco de Dados

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.

Alternativas

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