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

[Dúvida] Buscando os sabores dos produtos mais vendidos - Mod 4 Item /Aula 12

Tenho algum tempo de experiencia com uso de SQL e ainda me pego no raciocínio. Nao me recordo da materia de banco de dados da faculdade, anos 91 a 94. :(.

Existe alguma técnica para aplicar ao raciocínio para chegar numa instrução como a dessa atividade?

SELECT DISTINCT SABOR 
FROM TABELA_DE_PRODUTOS WHERE
    CODIGO_DO_PRODUTO 
    IN (SELECT INF.CODIGO_DO_PRODUTO 
        FROM ITENS_NOTAS_FISCAIS INF
        INNER JOIN TABELA_DE_PRODUTOS TP 
              ON INF.CODIGO_DO_PRODUTO = TP.CODIGO_DO_PRODUTO
        GROUP BY INF.CODIGO_DO_PRODUTO, TP.NOME_DO_PRODUTO HAVING SUM(INF.QUANTIDADE) > 394000 )
2 respostas
solução!

Oii Gustavo, como você está?

Imagino que seja bastante difícil, mesmo, lembrar de conceitos vistos há tanto tempo. Mas, tenho certeza que revisar e praticar vai te dar a oportunidade de ter uma visão madura e sólida sobre a lógica por trás do SQL.

Antes de falarmos sobre essa instrução que você compartilhou, vou te recomendar a nossa formação Modelagem de Dados. Nela, passamos pelo processo de abstrair algo do mundo real e transformá-lo em um banco de dados físico, que habitará um SGBD como o Oracle, por exemplo. Um dos cursos dessa formação, inclusive, fala sobre os princípios matemáticos por trás do SQL: a Algebra Relacional. Esse é o curso que pode realmente responder sua pergunta sobre como aplicar o raciocínio para chegar nas instruções mais complexas, porém, toda a formação fornece um conhecimento muito valioso para quem trabalha com banco de dados.

Já sobre a instrução SQL que você compartilhou:

A subconsulta (SELECT INF.CODIGO_DO_PRODUTO FROM ITENS_NOTAS_FISCAIS INF INNER JOIN TABELA_DE_PRODUTOS TP ON INF.CODIGO_DO_PRODUTO = TP.CODIGO_DO_PRODUTO GROUP BY INF.CODIGO_DO_PRODUTO, TP.NOME_DO_PRODUTO HAVING SUM(INF.QUANTIDADE) > 394000) será executada antes da consulta principal, por baixo dos panos. Ela retorna os códigos dos produtos que possuem uma quantidade total vendida superior a 394.000. Na subconsulta, temos cálculos, agrupamento e junções. É interessante conhecer cada um desses comandos com conforto para então partir para consultas mais complexas.

Essa subconsulta é usada como critério para filtrar os produtos na tabela TABELA_DE_PRODUTOS, por meio da cláusula IN. Já a instrução SELECT DISTINCT SABOR retorna apenas os sabores dos produtos que atendem ao critério estabelecido.

Uma dica importante para construir consultas complexas é fazer por etapas. Resolva cada parte individualmente, por exemplo, a escolha das colunas, a seleção da tabela, a aplicação de condições e assim por diante. Assim, você pode compreender como cada parte se comporta individualmente e como se comunicam, vendo a consulta se estruturar um pouquinho de cada vez.

Além disso, é importante conhecer bem a estrutura dos seus dados e ter clareza sobre quais perguntas precisam ser respondidas.

Espero ter ajudado, Gustavo! Conte com o fórum sempre que precisar de uma ajudinha em seus estudos. Estamos por aqui.

Abraços.

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

Obrigado, era isso mesmo, Algebra Relacional que estou sentindo falta. Meu plano de estudo precisa ser ajustado. A cada deficiencia de conhecimento agrego um novo curso. Se tiver alguma orientacao melhor, agradeço.