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.
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 !
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.