Questão
ID 716884Disciplina: Tecnologia da Informação
Assuntos: Consultas Aninhadas (IN, Exists, ALL, Some, ANY)
Ano: 2016 Banca: FGV - Fundação Getúlio Vargas Órgão: Instituto Brasileiro de Geografia e Estatística
Atenção:
Algumas das questões seguintes fazem referência a um banco de dados relacional intitulado BOOKS, cujas tabelas e respectivas instâncias são exibidas a seguir. Essas questões referem-se às instâncias mostradas.
AUTOR
AutorID | AutorNome |
1 2 3 | Arthur Conan Doyle Agatha Christie Edgar Allan Poe |
LIVRARIA
LivrariaID | LivrariaNome |
1 2 3 4 | Cultural Travessia Amazonas Kremlin |
LIVRO
LivroID | AutorID | Titulo | NumLivrarias |
1 | 1 | O Cão dos Baskervilles | NULL |
2 | 1 | As Aventuras de Sherlock Holmes | 2 |
3 | 2 | Assassinato no Expresso do Oriente | 2 |
4 | 2 | O Mistério dos Sete Relógios | 3 |
5 | 3 | Assassinatos na Rua Morgue | NULL |
OFERTA
LivrariaID | LivroID | Preco |
1 1 1 1 1 2 2 2 3 3 | 1 2 3 4 5 1 2 4 3 4 | 32 28 45 38 23 56 54 43 35 38 |
A tabela Livro representa livros. Cada livro tem um autor, representado na tabela Autor. A tabela Oferta representa os livros que são ofertados pelas livrarias, estas representadas pela tabela Livraria. NULL significa um campo não preenchido.
AutorID, LivrariaID e LivroID, respectivamente, constituem as chaves primárias das tabelas Autor, Livraria e Livro.
LivrariaID e LivroID constituem a chave primária da tabela Oferta.
No MS SQL Server, o comando SQL
select ll.livrariaNome, a.autorNome
from Livraria ll, Autor a
where
exists
(select * from Oferta o
where o.LivrariaID=ll.livrariaID)
and not exists
(select * from Livro l
where l.autorID=a.autorID
and not exists
(select * from Oferta o
where o.LivroID=l.livroID and
o.LivrariaID=ll.livrariaID))
produz, para as tabelas do banco de dados BOOKS, uma lista contendo nomes de livrarias e nomes de autores, tal que, para cada linha, a livraria listada: