SQL - MySQL - Produtos mais vendidos em um certo período [RESOLVIDO]

Pessoal, tenho as seguintes tabelas:

itens_pedido:

pedido:

e produto:

E gostaria de fazer uma consulta que me retornasse os cinco produtos mais vendidos em um certo intervalo de tempo, mas não consegui pensar em uma forma efetiva de fazer isso. Alguém consegue me dar uma luz?

Please

  1. Seleciona todos os pedidos que ocorreram em um certo período de tempo, juntamente (Join) com os respectivos ids dos produtos;
  2. Agrupa pelo id dos produtos, e coloca um count pra ver quantos de cada produto tem;
  3. ORDER BY invertido (desc) pra mostrar os que têm mais no topo;
  4. LIMIT pra pegar só 5.

Se você fizer isso, vai ter os ids dos 5 produtos mais vendidos em um período de tempo. Se quiser mais informações sobre eles, só fazer outro select, que utiliza toda essa query que você montou como subquery.

Em uma query só né?

Acho que resolvi, ficou assim:

select count(*) as qtd_vendido, produto.id as id_produto, produto.nome as nome_produto from produto join itens_pedido on itens_pedido.id_produto = produto.id join pedido on pedido.id = itens_pedido.id_pedido where pedido.status_entrega = 1 and pedido.data_pedido between '2017-02-13' and '2017-02-25' group by id_produto order by qtd_vendido desc limit 5

Obrigado lvbarbosa, ajudou demais cara. Abraço

Sim. Faz tempo que eu não mexo com SQL, mas vou arriscar uma aqui pra te ajudar a começar.

SELECT itens.id_produto, COUNT(*) as contagem
FROM pedido INNER JOIN itens_produto AS itens
ON pedido.id = itens.id_pedido
WHERE pedido.data_pedido (aqui voce coloca a lógica das datas, pra comparar se data_pedido está no periodo desejado. Deve ser algo com < e >, ou alguma função do  mysql)
GROUP BY itens.id_produto
ORDER BY contagem DESC
LIMIT 5;

Isso deve te dar os ids dos 5 produtos mais pedidos durante o intervalo de tempo. Você pode utilizar essa query como subquery para outra query, para obter todos os produtos que tem o id dentro da coluna de ids retornado por essa query ali.

1 curtida

Vi agora, hahahaha mandei uma pra ajudar, mas acho que não vai precisar.

1 curtida