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.
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: