Ir para conteúdo

POWERED BY:

Arquivado

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

Anderson007

[Resolvido] Subtotais Mysql

Recommended Posts

Olá pessoal,

 

Seguem os campos da tabela FINANCEIRO:

 

ID

NOME

PG_RB (a pagar ou a receber)

DATA

VALOR

 

O que eu preciso é listar os valores A PAGAR numa coluna, os valores A RECEBER numa coluna ao lado e (aí é o grande problema), fazer um subtotal a cada alteração de data.

 

Exemplo:

 

ID | NOME | DATA | VALOR A PAGAR | VALOR A RECEBER

1 | LUZ | 01012009 | 100,00 | |

2 | SALARIO1 | 01012009 | | 500,00 |

SUBTOTAL DO DIA 01012009 100,00 | 500,00 |

 

3 |AGUA | 15012009 | 50,00 | |

4 |SALARIO2 | 15012009 | | 1000,00 |

5 |FONE | 15012009 | 200,00 | |

SUBTOTAL DO DIA 15012009 250,00 | 1000,00 |

 

3 |ALUGUEL | 30012009 | 300,00 | |

4 |SALARIO3 | 30012009 | | 500,00 |

5 |CELULAR | 30012009 | 150,00 | |

SUBTOTAL DO DIA 15012009 450,00 | 500,00 |

 

TOTAL DO MES 012009 600,00 | 2000,00 |

 

Meu grande problema nisso é gerar os SUBTOTAIS DIÁRIOS.

 

Se alguém puder ajudar eu agraço muito.

 

Anderson Bortolai

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para você, Giesta, que tem mais experiência, é a única solução?

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Giesta,

 

O GROUP BY vai agrupar por data e o WITH ROLLUP vai dar o total a cada mudança de data. Até aí ótimo.

 

Porém, como ele está agrupando, a lista das contas já não aparece mais. ESSE É O PROBLEMA.

 

Tem idéia de como resolver?

 

Grato.

Anderson

Compartilhar este post


Link para o post
Compartilhar em outros sites

Giesta,

 

Acabei de resolver o problema: O GROUP BY é necessariamente ordenado pela data e, em seguida, pelo id da conta.

 

Para quem quiser, segue o código (apenas ilustrativo para este exemplo que dei):

 

//CONSULTA PARA A COLUNA DE CONTAS A RECEBER

$sql_rb = mysql_query("SELECT *, SUM(valor) as valor FROM financeiro WHERE pg_rb = 'RB' GROUP BY data, id WITH ROLLUP ");

 

//CONSULTA PARA A COLUNA DE CONTAS A PAGAR

$sql_pg = mysql_query("SELECT *, SUM(valor) as valor FROM financeiro WHERE pg_rb = 'PG' GROUP BY data, id WITH ROLLUP ");

 

E se quiser um SELECT apenas:

 

//CONSULTA PARA A COLUNA DE CONTAS A RECEBER E A PAGAR

$sql = mysql_query("SELECT *, SUM(if(financeiro.pg_rb = 'RB', valor,NULL)) as valor_a_receber, SUM(if(financeiro.pg_rb = 'PG', valor,NULL)) as valor_a_pagar FROM financeiro GROUP BY data, id WITH ROLLUP ");

 

E, ainda, se quiser apenas o saldo:

 

//CONSULTA PARA O SALDO ENTRE A RECEBER E A PAGAR

$sql_saldo = mysql_query("SELECT *, SUM(if(financeiro.pg_rb = 'RB', valor,(valor * -1))) as valor_saldo FROM financeiro GROUP BY data, id WITH ROLLUP ");

 

Grato pessoal.

 

Anderson

 

Obs.: Quem não entender e precisar de um help, pode mandar um e-mail que estou à disposição.

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.