Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Soluções da atividade

Segue duas soluções para essa atividade.

/*1ª Opção*/
SELECT i.CODIGO_DO_PRODUTO, p.nome_do_produto, SUM(QUANTIDADE) 
FROM ITENS_NOTAS_FISCAIS i, tabela_de_produtos p
WHERE i.codigo_do_produto = p.codigo_do_produto
GROUP BY i.CODIGO_DO_PRODUTO, p.nome_do_produto 
HAVING SUM(QUANTIDADE) > 394000 
ORDER BY SUM(QUANTIDADE) DESC;
/*2ª Opção*/
SELECT i.CODIGO_DO_PRODUTO, p.nome_do_produto, SUM(QUANTIDADE) 
FROM ITENS_NOTAS_FISCAIS i INNER JOIN tabela_de_produtos p
ON i.codigo_do_produto = p.codigo_do_produto
GROUP BY i.CODIGO_DO_PRODUTO, p.nome_do_produto 
HAVING SUM(QUANTIDADE) > 394000 
ORDER BY SUM(QUANTIDADE) DESC;
3 respostas

Oi, Lucas! Tudo certo?

Parabéns pela dupla resolução da atividade hahaha! Mandou muito bem no desenvolvimento das consultas.

Continue estudando e se dedicando. Se surgir alguma dúvida, conte com o fórum!

Um forte abraço.

Eu usei as duas opções para a resolução da atividade. Uma usando o WHERE e a outra INNER JOIN para juntar as tabelas. Existe alguma diferença na hora de usar um ou outro? Tipo, o desempenho na seleção, por exemplo... Ou não tem diferença?

solução!

Oi, Lucas!

Na maioria das vezes, usar WHERE ou INNER JOIN gera o mesmo desempenho, isso se deve a algo chamado plano de consulta, que é um código gerado "por baixo dos panos" para executar uma consulta. Ele pega a consulta e cria uma maneira otimizada de encontrar os dados — contudo, com relação a estas duas cláusulas, temos o mesmo resultado.

Lucas, ainda que sejam semelhantes em desempenho, é importante enfatizar que entre as cláusulas WHERE e INNER JOIN existem sim diferenças, sobretudo quando falamos de suas finalidades e facilidades de interpretação.

Ao passo que nesta atividade foi possível utilizar ambas, isso nem sempre será viável, uma vez que tais comandos possuem objetivos diferentes:

  • O WHERE permite filtrar determinados registros de uma consulta;
  • O INNER JOIN (e de maneira geral todos os tipos de JOIN) realizam a junção de tabelas.

O WHERE também consegue realizar junções, mas o JOIN foi criado justamente para isso. Logo, é mais interessante deixar o WHERE para outras atividades e, caso seja necessário unir tabelas, fazer uso das múltiplas variedades do JOIN.

Essa perspectiva esta diretamente atrelada à facilidade de interpretação. Em um primeiro momento (e dependendo da complexidade do SELECT), pode ser difícil entender o processo de junção com WHERE. Por outro lado, a sintaxe associada ao JOIN torna isso mais simples, observe o trecho abaixo:

FROM ITENS_NOTAS_FISCAIS i 
INNER JOIN tabela_de_produtos p
ON i.codigo_do_produto = p.codigo_do_produto

A partir dele, conseguimos fazer uma leitura direta, compreendendo que as tabelas que serão unidas são ITENS_NOTAS_FISCAIS e TABELA_DE_PRODUTOS, e o critério de junção será o campo codigo_do_produto de ambas as tabelas.

Lucas, espero ter ajudado! Estarei aqui para conversamos caso surjam outras dúvidas.

Até!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!