Questão FC369448
Quando referenciadas, considere as tabelas relacionais Competidor e Disputa, cujas estruturas e instâncias são descritas abaixo. Todas as colunas são definidas como strings. A tabe
Linguagem SQL
FGV · 2024
Quando referenciadas, considere as tabelas relacionais Competidor e Disputa, cujas estruturas e instâncias são descritas abaixo. Todas as colunas são definidas como strings.
A tabela Disputa contém as disputas realizadas entre competidores que aparecem na tabela Competidor. Em cada disputa há dois competidores, um com camisa azul e outro com camisa verde.
Competidor
| Nome |
| A |
| B |
| C |
| D |
| E |
| F |
Disputa
| Azul | Verde |
| A | B |
| C | A |
| B | A |
| C | E |
| F | A |
| F | D |
Considerando as tabelas Competidor e Disputa, descritas anteriormente, analise o comando SQL abaixo.
select c1.nome, c2.nome
from Competidor c1, Competidor c2
where not exists
(select * from Disputa d
where d.azul = c2.nome
and d.verde = c1.nome)
order by 1,2
Excetuados os títulos, o número de linhas produzidas pela execução desse comando é:
- 0;
- 6;
- 12;
- 30;
- 36.
Mostrar resposta e comentário
Gabarito
D
Comentário do professor
O comando faz um produto cartesiano entre Competidor c1 e Competidor c2, gerando \(6\times6=36\) pares possíveis de nomes.
Em seguida, a cláusula NOT EXISTS mantém apenas os pares (c1.nome, c2.nome) para os quais NÃO existe na tabela Disputa uma linha com d.azul = c2.nome e d.verde = c1.nome — isto é, elimina pares cuja disputa na ordem (azul, verde) já está registrada.
As disputas presentes são: (A,B), (C,A), (B,A), (C,E), (F,A), (F,D). São 6 pares que serão excluídos do produto cartesiano.
Portanto o total de linhas retornadas é \(36-6=30\).
Conteúdo do catálogo FC Concursos · Atualizado em