SóProvas


ID
2536162
Banca
UPENET/IAUPE
Órgão
UPE
Ano
2017
Provas
Disciplina
Banco de Dados
Assuntos

Suponha que exista uma determinada tabela de livros chamada livro, com os campos id (chave primária), nome, edicao, ano, editora e autor_fk. O campo autor é uma chave estrangeira para a tabela de autores chamada autor, que possui os campos id (chave primária) e nome. Dessa maneira, qual dos comandos abaixo retorna uma lista com a quantidade de livros produzidos em cada ano para o autor de nome "Sergio‟?

Alternativas
Comentários
  • select count(*), 1.ano from livro 1, autor a where a.nome like 'Sergio' group by 1.ano

    Nessa, ele não amarra os livros com o autor.

    select count(*), 1.ano from livro 1 where 1.autor_fk in (select id from autor where nome like 'Sergio') order by 1.ano

    O "order by" aqui já mataria essa alternativa.

    select count(*),ano from livro where autor.nome like 'Sergio' group by ano

    Aqui ele faz uso de um campo em uma tabela que não foi solicitada no from.

    select *, 1.ano from livro 1 where 1.autor_fk in (select id from autor where nome like 'Sergio') group by 1.ano 

    Aqui não há a função de agregação count, já poderia ser ignorada aqui mesmo.

    select count(*), 1.ano from livro 1 left join autor a on a.id = 1.autor_fk where a.nome like 'Sergio' group by 1.ano

    Portanto, a letra E é o gabarito. Tá tudo lindo, o left join amarrando os livros ao autor que o escreveu, o count e o group by.

  • ANDERSON DE LIMA MORAIS vc diz que na C :

    o select count(*),ano from livro where autor.nome like 'Sergio' group by ano

    Aqui ele faz uso de um campo em uma tabela que não foi solicitada no from.

    Porém na E é where a.nome não seria igual a autor.nome?