Questão FC369451
Considere o esquema relacional a seguir, implementado em SQL. create table recurso ( id integer primary key, nome varchar(20) not null, valor real ); create table projeto ( id inte
Linguagem SQL
FGV · 2024
Considere o esquema relacional a seguir, implementado em SQL.
create table recurso
(
id integer primary key,
nome varchar(20) not null,
valor real
);
create table projeto
(
id integer primary key,
nome varchar(20) not null,
verba real
);
create table alocacao
(
id_recurso integer,
id_projeto integer,
primary key(id_recurso,id_projeto),
foreign key(id_recurso) references recurso,
foreign key(id_projeto) references projeto
);
Assinale a opção que apresenta a consulta que gera como resultado de execução uma lista com o nome dos recursos alocados em todos os projetos cadastrados.
- select r.nome from recurso r
- select r.nome from recurso r where not exists (select 1 from alocacao a where a.id_recurso=r.id )
- select r.nome from recurso r where r.valor>(select avg(valor) from recurso)
- select r.nome from recurso r where not exists (select 1 from projeto p where not exists (select 0 from alocacao a where a.id_recurso=r.id and a.id_projeto=p.id ) )
- select r.nome from recurso r where exists (select 1 from alocacao a where a.id_recurso=r.id )
Mostrar resposta e comentário
Gabarito
D
Comentário do professor
Essa consulta usa o padrão de dupla negação com not exists para expressar a ideia de "alocado em todos os projetos".
Começa por selecionar os nomes em recurso (r): select r.nome from recurso r.
O primeiro not exists envolve uma subconsulta sobre projeto (p) que busca se existe algum projeto que viole a condição.
Dentro dela há outro not exists que verifica, para cada projeto p, a existência de uma linha em alocacao onde r.id está ligado a p.id (correlação entre as consultas).
Assim: o recurso é retornado somente se não existir nenhum projeto para o qual não haja alocação desse recurso — ou seja, está alocado em todos os projetos.
Observação: os valores literais em select 1 ou select 0 são irrelevantes; servem apenas para testar existência.
Conteúdo do catálogo FC Concursos · Atualizado em