

Seu próximo nível começa aqui
Seu desenvolvimento não pode ter limites. Garanta sua Assinatura Ilimitada e libere uma preparação completa com os melhores professores do Brasil.
Considere o esquema relacional que representa parte de um sistema de uma empresa:
Projetos(IdProjeto, nome)
Pessoas(IdPessoa, nome)
ProjetosPessoas(#IdProjeto,#IdPessoa)
Legenda: Campos sublinhados compõem a chave primária da tabela e campo precedido de # é uma chave estrangeira
A coordenação de recursos humanos deseja saber os nomes das pessoas que já trabalharam em todos os projetos cadastrados na base de dados. A consulta que expressa correta e eficientemente o que o relatório deve mostrar é:
SELECT * FROM Projetos, ProjetosPessoas, Pessoas WHERE USING(IdProjeto, IdPessoa) AND IdProjeto = ALL (SELECT * FROM Projetos) |
SELECT nome FROM Pessoas WHERE IdPessoa IN (SELECT IdPessoa FROM ProjetosPessoas WHERE EXISTS (SELECT * FROM Projetos)) |
SELECT nome FROM Pessoas PE WHERE NOT EXISTS (SELECT * FROM Projetos PR WHERE NOT EXISTS (SELECT * FROM ProjetosPessoas PP WHERE PE.IdPessoa = PP.IdPessoa AND PR.IdProjeto = PP.IdProjeto)) |
SELECT nome FROM PESSOAS PE WHERE EXISTS (SELECT IdPessoa FROM ProjetosPessoas LEFT JOIN Projetos) |
SELECT nome FROM Projetos PR WHERE EXISTS (SELECT * FROM Pessoas PE WHERE EXISTS (SELECT * FROM ProjetosPessoas PP WHERE PE.IdPessoa = PP.IdPessoa AND PR.IdProjeto = PP.IdProjeto)) |