SóProvas


ID
17785
Banca
CESGRANRIO
Órgão
BNDES
Ano
2008
Provas
Disciplina
Banco de Dados
Assuntos

Observe as seguintes tabelas de um sistema:

Pessoa (nomePessoa, endereço)
Filme (nomeFilme, estúdio, verba)
Trabalha (nomePessoa(FK), nomeFilme(FK), atividade, salário)

Um administrador de dados deseja fazer o seguinte relatório: Todas as pessoas, os filmes nos quais já trabalharam e o total recebido por cada filme. Se uma pessoa nunca trabalhou num filme, ela deve aparecer no relatório. A atividade que a pessoa exerceu no filme (ex: ator, diretor, câmera etc.) não é importante para o relatório.

Qual consulta retorna o conjunto resposta correto?

Alternativas
Comentários
  • a) SELECT P.nomePessoa, T.nomeFilme, sum(T.salário) totalFROM Pessoa P LEFT OUTER JOIN Trabalha TON P.nomePessoa = T.nomePessoaGROUP BY P.nomePessoa, T.nomeFilme

    Justificativa:

    A alternativa diz que mesmo que uma pessoa nunca trabalhou num filme deve aparecer no relatório, então deve ser usado o OUTER JOIN, pois o INNER JOIN só apresenta os resultados que casam nas duas tabelas. Deve ser usado um LEFT OUTER JOIN com a tabela Pessoa a esquerda e a tabela Trabalha a direita, assim no relatório irá aparecer todas as ocorrências da tabela Pessoa, deve-se fazer a somatória do salário na tabela Trabalha além de agrupar por nomeFilme e nomePessoa. Como apresentado na alternativa A.