Considere o esquema relacional que representa parte de um si...
Livro(IdLivro,Titulo,Ano,#IdEditora) Editora(IdEditora, Nome) Assunto(IdAssunto, Descricao) LivroAssunto(#IdLivro,#IdAssunto)
Legenda: Campos sublinhados compõem a chave primária da tabela e campo precedido de # é uma chave estrangeira
A coordenação de uma biblioteca deseja um relatório para ver os títulos de todos os livros e a quantidade de assuntos que eles abordam, mostrando apenas aqueles que tratam de mais de dois assuntos.
Analise as alternativas de implementação dessa consulta e assinale a alternativa que expressa correta e eficientemente o que o relatório deve mostrar é:
Comentários
Veja os comentários dos nossos alunos
Alternativa Correta Letra E
Bora la explicar tudo isso
Primeiro:
`SELECT TITULO, COUNT(DISTINCT IDASSUNTO)`: Esta parte da consulta seleciona duas colunas.
A primeira coluna é `TITULO` da tabela `LIVRO`, e a segunda coluna é o número de valores distintos na coluna `IDASSUNTO` da tabela `LIVROASSUNTO` relacionados ao livro (identificado pelo `IDLIVRO`).
Essa contagem é realizada usando a função `COUNT` em conjunto com `DISTINCT`.
Segundo:
`FROM LIVRO LEFT OUTER JOIN LIVROASSUNTO USING(IDLIVRO)`: Aqui, as tabelas `LIVRO` e `LIVROASSUNTO` são combinadas usando uma junção externa à esquerda (`LEFT OUTER JOIN`). Isso significa que todas as linhas da tabela `LIVRO` serão incluídas na saída, mesmo que não haja correspondência correspondente na tabela `LIVROASSUNTO`. A junção é feita usando a coluna `IDLIVRO`.
Terceiro:
GROUP BY TITULO`: Os resultados são agrupados pela coluna `TITULO`. Isso significa que as contagens de assuntos distintos serão agrupadas para cada título de livro.
Quarto
`HAVING COUNT(DISTINCT IDASSUNTO) > 2`: O operador `HAVING` é usado para filtrar os resultados após a fase de agrupamento. Neste caso, apenas os grupos (títulos de livros) cujo número de assuntos distintos (`COUNT(DISTINCT IDASSUNTO)`) for maior que 2 serão incluídos na saída final.
Resumindo:
O objetivo dessa consulta é encontrar os títulos de livros que têm mais de 2 assuntos distintos relacionados a eles na tabela `LIVROASSUNTO`. A função `COUNT(DISTINCT IDASSUNTO)` fornece o número de assuntos distintos para cada título de livro, e o `HAVING` filtra os resultados para incluir apenas aqueles que atendem ao critério de ter mais de 2 assuntos distintos.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo