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

Próximas questões
Com base no mesmo assunto
Q824810 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 mostra o nome e a data de contratação de todos os dentistas que foram contratados antes de seus chefes, contendo ainda o nome e a data de contratação de seus chefes.

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: C - Certo

Vamos desvendar juntos o porquê dessa alternativa estar correta. Ao examinar o comando SQL dado, notamos que ele realiza uma operação de JOIN (junção) na tabela dentista consigo mesma. Isso é feito com o intuito de correlacionar cada dentista com seu respectivo chefe, baseando-se na condição d.cro_chefe = c.cro, onde presumimos que cro_chefe é a chave de referência para o cro (registro profissional) do chefe do dentista na mesma tabela.

A cláusula WHERE é utilizada para filtrar essa junção, selecionando apenas as linhas onde a data de contratação do dentista (d.data_contratacao) é anterior à data de contratação de seu chefe (c.data_contratacao). Isso significa que a consulta está projetada para retornar os nomes e as datas de contratação dos dentistas que foram contratados antes de seus respectivos chefes, cumprindo exatamente o que foi afirmado na questão.

Além disso, é importante observar que a consulta solicita os nomes e datas de contratação tanto do dentista quanto do chefe, o que é alcançado pelo SELECT que lista d.nome, d.data_contratacao, c.nome, c.data_contratacao. Dessa forma, a saída da consulta satisfaz integralmente a descrição fornecida no enunciado, o que justifica a resposta como correta.

Ao entender essa questão, você exercita conceitos essenciais de SQL como a realização de junções de tabelas e a aplicação de filtros condicionais. Essas são habilidades fundamentais para a manipulação e consulta eficiente de bancos de dados relacionais, que são frequentemente testadas em concursos públicos na área de tecnologia da informação, especialmente aqueles com foco em funções que envolvem o trabalho com Banco de Dados.

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

De fato o gabarito é certo. Mas não foi tão fácil enchergar isso de primeira. Uma dica é pensar na tabela dentista com os campos apresentado na questão. 

 

A tabela dentista teria os seguintes campos DENTISTA(CRO, NOME, DATA_CONTRATACAO, CRO_CHEFE) ou seja, para cada dentista XPTO terá o CRO de seu chefe associado a ele. E o CRO do próprio chefe está na tabela.

 

Então poderiamos ter a seguinte situação

 

CRO | NOME | DATA_CONTRATACAO | CRO_CHEFE

1       | ANA    | 20/12/2016                      | 4

2       | BOB    | 01/05/2017                      | 4

3       | JO       | 30/10/2016                      | 4

4       | EMY    | 02/03/2017                      | NULL

 

Logo os nomes que seriam retornados juntamente com os demais campos seriam ANA e JO

Complementando a resposta de Wesley Nunes:

CREATE TABLE dentista (

  cro              INTEGER  PRIMARY KEY,
  nome             TEXT     NOT NULL,
  data_contratacao DATE     NOT NULL,
  cro_chefe        INTEGER,
  FOREIGN KEY (cro_chefe) REFERENCES dentista (cro)  ON UPDATE CASCADE
);

Clique para visualizar este comentário

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