Pular para o conteúdo principal

Questão de Banco de Dados — SQL — CESGRANRIO 2011

Banco de DadosSQL
Código
cg039358
Banca
CESGRANRIO
Órgão
BNDES
Ano
2011
Nível
Superior
Cargo
Profissional Básico - Análise de Sistemas - Desenvolvimento
As tabelas Projeto, Funcionario e Participacao_Projeto participam da base de dados de um sistema de controle de projetos. A estrutura dessas tabelas é a seguinte:Imagem associada para resolução da questãoO comando SQL que retorna o nome somente dos funcionários que participaram de TODOS os projetos é:
  1. ASELECT DISTINCT F.NOME FROM FUNCIONARIO F INNER JOIN PARTICIPACAO_PROJETO PP ON F.MATRICULA = PP.MATRICULA INNER JOIN PROJETO P ON P.IDPROJETO = PP.IDPROJETO
  2. BSELECT DISTINCT F.NOME FROM FUNCIONARIO F INNER JOIN PARTICIPACAO_PROJETO PP ON F.MATRICULA = PP.MATRICULA WHERE EXISTS (SELECT 1 FROM PROJETO P WHERE P.IDPROJETO = PP.IDPROJETO)
  3. CSELECT F.NOME FROM FUNCIONARIO F WHERE MATRICULA IN (SELECT MATRICULA FROM PARTICIPACAO_PROJETO)
  4. DSELECT F.NOME FROM FUNCIONARIO F WHERE NOT EXISTS (SELECT 1 FROM PROJETO P WHERE NOT EXISTS (SELECT 1 FROM PARTICIPACAO_PROJETO PP WHERE PP.IDPROJETO = P.IDPROJETO AND PP.MATRICULA = F.MATRICULA))
  5. ESELECT F.NOME FROM FUNCIONARIO F WHERE NOT EXISTS (SELECT 1 FROM PARTICIPACAO_PROJETO PP WHERE PP.MATRICULA = F.MATRICULA AND NOT EXISTS (SELECT 1 FROM PROJETO P WHERE PP.IDPROJETO = P.IDPROJETO))
Revelar gabarito e comentário

GabaritoD — SELECT F.NOME FROM FUNCIONARIO F WHERE NOT EXISTS (SELECT 1 FROM PROJETO P WHERE NOT EXISTS (SELECT 1 FROM PARTICIPACAO_PROJETO PP WHERE PP.IDPROJETO = P.IDPROJETO AND PP.MATRICULA = F.MATRICULA))

Link permanente: /questoes/cg039358