FC ConcursosFC Concursos

Questão FC369497

Considere a execução do script SQL a seguir. create table R1(A int, B int) insert into R1 values (1,3),(2,2),(5,3),(4,3) create table R2(A int, C int) insert into R2 values (2,1),(

Linguagem SQL

FGV · 2024

Considere a execução do script SQL a seguir.

 

create table R1(A int, B int)
insert into R1 values (1,3),(2,2),(5,3),(4,3)
create table R2(A int, C int)
insert into R2 values (2,1),(2,2),(3,1),(2,4),(6,6)
create table R3(A int)
insert into R3 values (1),(2),(4),(6)

 

select A from R1
where
not exists
(select * from R2
where R1.A = R2.C
and not exists
(select * from R3
where R2.A=R3.A))
order by 1

 

O resultado produzido pela execução do comando select contém, na ordem, somente os valores:

  1. 2
  2. 5
  3. 1 / 4 / 5
  4. 2 / 4 / 5
  5. 2 / 4
Mostrar resposta e comentário

Gabarito

D

Comentário do professor

O predicado é not exists aplicado a uma subconsulta que busca em R2 linhas com R2.C = R1.A e tal que não exista correspondência em R3 para R2.A. Logo, um valor R1.A é retornado quando não existe em R2 nenhuma linha com C = R1.A cujo A esteja ausente em R3.

Verificando cada R1.A:

1: R2 tem (3,1) — aqui R2.A = 3 não está em R3, então a subconsulta é não-vazia ⇒ not exists é falso ⇒ 1 é excluído.

2: R2 tem (2,2) e R2.A = 2 está em R3, não há linha que faça o segundo not exists verdadeira ⇒ subconsulta vazia ⇒ 2 é incluído.

5: não há R2 com C=5 ⇒ subconsulta vazia (vacuamente verdadeira) ⇒ 5 é incluído.

4: R2 tem (2,4) e R2.A = 2 está em R3 ⇒ subconsulta vazia ⇒ 4 é incluído. Ordenando: 2, 4, 5.

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo