Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Denis Martos

Preenchendo select com valor 0 onde não encontra registros

Recommended Posts

Boa tarde,

Estou trabalhando em uma parte do meu sistema onde eu gero gráficos com informações que vem do banco de dados. Resumidamente eu pego as informações por mês, por em alguns meses não tem informações lançadas no banco, sendo assim ele não exibe o mês em si, mais eu preciso que ele mostre o mês e o valor em R$ 0,00.

Exemplo:

SELECT concat(MONTH(vencimento), '-' ,YEAR(vencimento)) as data, sum(valor) as valor FROM contas_pagar WHERE cod_tipo_conta = 3 AND vencimento BETWEEN ('2016/04/01') AND ('2016/07/30') GROUP BY MONTH(vencimento);

Essa é a resposta do banco:

data    valor
4-2016  2353.21
5-2016  190.00
6-2016  576.20
7-2016  823.67

Até ai tudo certo, porém quando eu faço o select e em um dos meses não possui nenhum dado no banco ele retorna assim:

data    valor
4-2016  2353.21
5-2016  190.00
7-2016  823.67

Notem que ele pulou o mês 6-2016 e assim não consigo manipular no meu gráfico, preciso que ele retorne o mês com o valor 0, conforme exemplo abaixo:

data    valor
4-2016  2353.21
5-2016  190.00
6-2016  0.00
7-2016  823.67

Obrigado a todos !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Motta,

Dei uma olhada no Post que me enviou, fiz uns testes desta forma, porem pelo que eu entendi, até dando uma pesquisada é que posso setor como 0 onde não estiver registro. Porem o que ocorre é que o valor tem que ficar zero, mais a data eu não posso setar como "0" ele tem que mostrar a data do mês...

Então se não encontra o registro deve mostrar:

Data valor

05/2016 0

Porem não sei se fiz certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu pensei fazer de outra forma, mais isso me parece muita gambiarra...

Recebendo o período de meses no PHP eu faço um "for" e cada mês vou buscando a informação no banco e montando em um array, o problema é que vou fazer diversas requisições para o banco....

Mais pensando por outro lado este relatório vai pegar no máximo 12 meses e não é muito acessado, mais não me conforta saber que estou fazendo gambiarra.

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://forum.imasters.com.br/topic/542198-incrementar-semanas/

Este é o ponto SQL só trásvalores existentes para trazer valores não existentes é preciso fazer uso de um artifício , uma solução que já fiz (Oracle) foi gerar uma sequencia e montar datas , amanhã posto um exemplo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.