[firebase-br] RES: sql de caixa

Marcio Da Silva Ereno marcio em msereno.com.br
Qui Maio 28 14:34:48 -03 2009


Oi Luis grato pelas dicas...

Eu tenho apenas uma tabela chamada caixa, e eu fiz o sql para apurar o total
do DEBITO  do periodo e total de CREDITO do periodo e a tabela so tem uns
500 registro e eu achei que esta demorando um pouco para apurar esses
totais. Na tabela de caixa eu tenho os seguintes atributos, CODIGO, DATA,
TIPO (debito/credito) VALOR e gostaria se saber como fazer o sql para apurar
esse valores rapidos?

2009/5/28 LuisFireVB <luisfirevb em gmail.com>

> Olha não sou de fazer ainda SQL na mão, uso ferramentas para isso, mas ....
>
> A princípio seu conceito está equivocado. Você está fazendo 4 selects e não
> 3, ainda dois são repetidos, ou seja, faz duas vezes a mesma coisa.
>
> Você tem que fazer só dois selects, um somando débitos e outro créditos,
> passa as duas informações para rotina que chamou e dentro dela faz o
> calculo, crédito - débito = saldo atual.
>
> Outro detalhe muito importante, para esse cálculo você precisa do saldo
> inicial do período calculado. Uma forma de fazer isso é ter esse valor
> gravado numa tabela auxiliar de saldos parciais onde terá os lançamentos
> por
> data, assim saberá os saldos em cada dia, e querendo. Dessa forma porderá
> em
> muitas consultas abrir mão de varrer a tabela de lançamentos para realizar
> esse conta com períodos grandes.
>
> Uma dica seria na tabela auxiliar, contabilizada diariamente ou em tempo
> real para cada lançamento, ter os campos créditos e débitos também
> totalizados, assim não teria de calcular a cada vez, bastaria pegar os
> totais na data desejada.
>
> OBS: Agora se quiser totalizar o valor de créditos ou débitos num perioso
> (seja, semanal ou mensal) basta somar os lançamentos consolidados da tabela
> auxiliar e não da tabela de lançamentos individuais.
>
> Acho que ao longo do tempo veria que a performance não se alterará, mas
> dessa forma que fez verá o problema aumentar ao longo do tempo (mais
> lançamentos para percorrer).
>
> Luis
>
> -----Mensagem original-----
> De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br]
> Em
> nome de Marcio Da Silva Ereno
> Enviada em: quinta-feira, 28 de maio de 2009 13:39
> Para: lista em firebase.com.br
> Assunto: [firebase-br] sql de caixa
>
> Ola pessoal, eu fiz uma tabela de caixa tipo livro caixa com DEBITO  e
> CREDITO e fiz um sql para calcular o total de CREDITO  e DEBITO  e SALDO
> mais a tabela tem uns 500 lançamentos e quando eu entro na tela demora para
> calcular o sql que estou usando e o seguinte:
>
> select
> (select coalesce(sum(valo_cai),0) from caixa inner join historico on
> codi_his=hist_cai where tipo_his='C' and data_cai=:PDATA) as Credito,
> (select coalesce(sum(valo_cai),0) from caixa inner join historico on
> codi_his=hist_cai where tipo_his='D' and data_cai=:PDATA) as Debito,
> (select coalesce(sum(valo_cai),0) from caixa inner join historico on
> codi_his=hist_cai where tipo_his='C')-
> (select coalesce(sum(valo_cai),0) from caixa inner join historico on
> codi_his=hist_cai where tipo_his='D') as saldo
> from caixa
> group by 1,2,3
>
>
> o primeiro calcula o CREDITO  no periodo
> o segundo calcula o DEBITO no periodo
> o terceiro calcula  o CREDITO - DEBITO  para calcular o sado final
>
> Alguem poderia me ajudar dando alguma dica como melhorar isso?
> grato
> Marcio Ereno
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista