Considere o esquema relacional que representa parte de um si...

Próximas questões
Com base no mesmo assunto
Q2172653 Banco de Dados
Considere o esquema relacional que representa parte de um sistema de uma biblioteca:
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 é:
Alternativas

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