Entrar

Questão 237314: A execução do comando SQL select count(*) ...

A execução do comando SQL select count(*) from concurso c left join (select i.id_concurso,cd.id_candidato from inscrição i inner join candidato cd on i.id_cand...



Texto associado.

Nas questões 51 até 54 considere um banco de dados
simplificado referente ao controle de concursos, constituído
pelas tabelas Concurso, Cargo, Candidato e Inscrição,
criadas pelo script SQL mostrado abaixo.

create table concurso (
id_concurso int not null primary key,
concurso varchar(60) not null,
inscritos int default 0);

create table cargo (
id_cargo int not null primary key,
cargo varchar(60) not null,
id_concurso int not null,
constraint ci0 foreign key (id_concurso)
references concurso (id_concurso));

create table candidato (
id_candidato int not null primary key
clustered,
nome varchar(40) not null);

create table inscrição
(
id_concurso int not null,
id_candidato int not null,
id_cargo int,
pontos int,
constraint ci1 foreign key (id_concurso)
references concurso (id_concurso),
constraint ci2 foreign key (id_candidato)
references candidato (id_candidato),
constraint ci3 foreign key (id_cargo)
references cargo (id_cargo),
constraint ci4 primary key
(id_concurso,id_candidato));

Um candidato pode estar inscrito em zero ou mais
concursos e um concurso pode ter zero ou mais candidatos
nele inscritos. Para cada concurso, o candidato inscrevese
em um cargo e recebe um número de pontos. É possível
que um candidato fique temporariamente sem cargo definido.
Cada concurso tem uma lista de um ou mais cargos nos
quais os candidatos podem estar inscritos. O atributo
inscritos, na tabela concurso, armazena o número de
inscritos no concurso.

Considere ainda que:
a tabela concurso tenha 5 registros;
a tabela candidato tenha 40.000 registros;
a tabela inscrição tenha 55.000 registros;
haja 2 concursos ainda sem inscrições;
haja 90 candidatos ainda sem inscrições.

A execução do comando SQL


select count(*)
from concurso c
left join
(select i.id_concurso,cd.id_candidato
from inscrição i inner join candidato cd
on i.id_candidato=cd.id_candidato) x
on c.id_concurso=x.id_concurso

resulta no número:

🧠 Mapa Mental