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 consulta apresenta erro de sintaxe, pois não é possível, em SQL, especificar, na cláusula from, duas tabelas com o mesmo
nome.
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