Páginas

quarta-feira, 9 de novembro de 2011

BNDES Jan/2008 - Questão 42

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

Resposta (A)

SELECT P.nomePessoa, T.nomeFilme, sum(T.salário) total
FROM Pessoa P LEFT OUTER JOIN Trabalha T
ON P.nomePessoa = T.nomePessoa
GROUP BY P.nomePessoa, T.nomeFilme

Comentário: LEFT OUTER JOIN é uma Operação JOIN que permite especificar a cláusula de junção (dizer como as linhas das tabelas serão combinadas). O OUTER é o responsável por manter registros da tabela da primeira tabela (esquerda) que não possuem correspondência na segunda tabela (a junção acontece com uma linha nula). Por isso marquei de vermelho o trecho da questão que valida a resposta A. 

Espero que tenha sido útil!

Nenhum comentário:

Postar um comentário