1
resposta

[Dúvida] Ultima questão

π nome_livro, id_livro, fonte_recomendacao, nota_media (Livros ⨝ nota_media > 4.3 LivrosRecomendados) Eu precisei retirar o id_livro, pq estava me dando um erro de ambiguidade entre esse e o nome_livro, depois disso funcionou direitinho, mas não entendi a razão do problema.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Outra coisa, qual a diferença entre-->

π nome_livro, nota_media (σ nota_media > 4.3 (Livros ⨝ LivrosRecomendados))

e esse -->

π nome_livro, nota_media (Livros ⨝ nota_media > 4.3 LivrosRecomendados)

Eu pesquisei e tive uma ideia geral, aparentemente o primeiro faz a junção para depois filtrar, porém o segundo filtra ao mesmo tempo da junção, mas não sei as implicações disso e não entendo isso completamente, se puderem me ajudar ficarei grato

1 resposta

Oii, Alexandre! Tudo bem?

O erro de ambiguidade ocorre porque as tabelas livrose LivrosRecomendados possuem a mesma coluna, a id_livro. Quando você faz a junção das duas tabelas, o sistema não sabe a qual coluna id_livro você está se referindo, retornando um erro de ambiguidade. Como sugestão, você também pode usar um alias para especificar de qual tabela a coluna vem.

Sobre as diferenças: a primeira abordagem, significa que a junção é feita considerando todas as linhas das duas tabelas, e depois as linhas resultantes são filtradas pela condição nota_media > 4.3. E na segunda abordagem o filtro nota_media > 4.3 é aplicado durante a junção das tabelas. Ou seja, apenas as linhas de LivrosRecomendados que estão dentro a condição nota_media > 4.3 serão consideradas na junção com a tabela Livros. A segunda abordagem é mais eficiente por reduzir o número de linhas que são processas durante a junção, mas ambos exemplos, se aplicados corretamente, trazem o resultado esperado.

Espero ter ajudado. Qualquer dúvida, conte conosco.

Bons estudos, Alexandre!