toreti 0 Denunciar post Postado Abril 17, 2012 Olá pessoal, estou criando um sistema para gerenciar vendas de veículos e criando gráficos a partir dos resultados. Mas num deles me surgiu uma dúvida, para entender o problema vamos supor o seguinte cenário de vendas: 4 carros vendidos no dia 5 2 carros vendidos no dia 13 3 carros vendidos no dia 16 Para resgatar a quantidade de veículos vendidos por dia eu estou usando esta lógica: SELECT DAY(data_venda) dia, COUNT(id) qtd FROM venda GROUP BY dia O resultado disso daria 3 linhas mostrando os dias que tiveram vendas e sua quantidade. Mas eu gostaria que aparecesse todos os dias do mês e sua quantidade de vendas. Existe como fazer isto em MySql? Abraços, Felipe Toreti. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 17, 2012 SELECT DAY(data_venda) dia, COUNT(id) qtd FROM venda where year(data_venda) = 2012 and month(data_venda) = 4 GROUP BY dia Compartilhar este post Link para o post Compartilhar em outros sites
toreti 0 Denunciar post Postado Abril 17, 2012 SELECT DAY(data_venda) dia, COUNT(id) qtd FROM venda where year(data_venda) = 2012 and month(data_venda) = 4 GROUP BY dia Obrigado pela atenção, mas o resultado seria o mesmo: dia - qtd 5 - 4 12 - 2 16 - 3 Eu gostaria de saber se existe como retornar neste formato: dia - qtd 1 - 0 2 - 0 3 - 0 4 - 0 5 - 4 ... Porque desta forma eu conseguiria montar melhor os gráficos de linha. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 17, 2012 Teria uma gambiarra select dia,sum(qtd) qtd from ( SELECT DAY(data_venda) dia, COUNT(id) qtd FROM venda where year(data_venda) = 2012 and month(data_venda) = 4 GROUP BY dia union all SELECT @rownum:=@rownum+1 AS dia, 0 qtd FROM venda limit 30 ) virtual group by dia Não estou certo da sintaxe MySql mas a ideia da query de baixo é gerar uma sequencia de 1 a 30 que garanta que o di apareça no resultado. No Oracle se usa o rownum, em MySql talvez exista uma forma melhor. Outra coisa seria tratar o meses de 28,29,30 e 31 dias. Mas a ideia básica da gambiarra é esta. Fonte Compartilhar este post Link para o post Compartilhar em outros sites
toreti 0 Denunciar post Postado Abril 18, 2012 Obrigado pela ajuda, mas não consegui utilizando somente SQL ): Mas sem problemas, eu apenas queria ver se existia uma maneira de fazer isto diretamente no banco. Eu resolvi meu problema tratando no PHP, onde criei um array com um registro para cada dia do mês e com a quantidade de vendas zeradas, depois atualizo os registros deste array referentes aos dias retornadas da consulta. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 18, 2012 Ok, mas creio que daria para fazer via sql. Compartilhar este post Link para o post Compartilhar em outros sites