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

Próximas questões
Com base no mesmo assunto
Q824808 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 consulta apresenta erro de sintaxe, pois não é possível, em SQL, especificar, na cláusula from, duas tabelas com o mesmo nome.

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: E - errado

Para compreender este assunto, é importante estar familiarizado com os conceitos básicos de SQL, especialmente com a realização de junções (joins) entre tabelas. No SQL, é possível realizar uma consulta (query) que envolve mais de uma tabela. A cláusula JOIN é usada para combinar linhas de duas ou mais tabelas, com base em uma coluna relacionada entre elas.

Neste caso específico, a consulta faz um JOIN da tabela dentista consigo mesma. Isso é útil para comparar registros dentro da mesma tabela, como para encontrar relações hierárquicas, que é o que parece estar sendo feito aqui ao comparar um dentista com seu chefe, possivelmente indicado pelo campo cro_chefe.

É importante notar que, ao fazer isso, é fundamental utilizar alias para distinguir as duas "visões" da mesma tabela. No SQL, um alias é um nome temporário atribuído a uma tabela ou coluna para fins de uma consulta específica. Aqui, os aliases d e c são usados para representar a mesma tabela dentista, mas tratando-se de registros diferentes, possivelmente um dentista e seu chefe.

A condição especificada na cláusula ON (d.cro_chefe = c.cro) é o que relaciona as duas visões da tabela, indicando que o campo cro_chefe de um registro na visão d deve ser igual ao campo cro de um registro na visão c. Isso é uma sintaxe válida e comum para estabelecer relações entre tabelas ou visões de tabelas em SQL.

O WHERE filtra os resultados para que apenas aqueles registros onde a data_contratacao do dentista representado por d é menor do que a data_contratacao do dentista representado por c sejam retornados. Isso faz sentido no contexto de um relacionamento hierárquico, onde o chefe (c) provavelmente teria sido contratado antes do seu subordinado (d).

Portanto, a afirmação de que a consulta apresenta erro de sintaxe porque especifica, na cláusula FROM, duas tabelas com o mesmo nome é incorreta. O uso de alias permite justamente a utilização da mesma tabela mais de uma vez na mesma consulta sem ambiguidade. A consulta está sintaticamente correta e é uma prática comum em SQL para fazer comparações dentro da mesma tabela.

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

Pode sim, desde que seja utilizado apelido para as tabelas, conforme feito na questão. Uma das tabelas ele chamou de d e a outra chamou de c.

Qc !!!!!!! Comentário do professor nao existe para SQL???????

Gabarito Errado

As tabelas têm o mesmo nome porém apelidos diferentes, vejam:

FROM dentista d JOIN dentista c

 

 

 

 

"Retroceder Nunca Render-se Jamais !"
Força e Fé !
Fortuna Audaces Sequitur !

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo