[firebase-br] resolucao de query

Sandro Souza escovadordebits em gmail.com
Qua Dez 3 16:06:21 -03 2008


Bom dia/tarde Artur.

Tranquilo Artur. :D

Amigo, considere a possibilidade de migrar de Interbase 6.0.1 para o
Firebird mais novo.

Não será necessário regerar o banco de dados, pois o Firebird "entende" os
bancos que o Interbase cria.

Claro que se for regerado, vai ganhar alguns benefícios de performance, já
que o formato interno dos novos bancos de dados dos Firebirds a partir da
versão 2.0 sofreram reestruturação visando o aumento da performance.

Mas em algumas empresas em que estive (clientes), trocando o Interbase 6.0.1
por Firebird, já gerou, no mínimo, ganho de performance.

2008/12/3 Artur Sanfins <artur.gmane em tcimix.com>

> A idéia é esta, isto é uma curva abc.
> No entando, estou usando o Interbase 6.0 (cliente), parte do select dentro
> do primeiro select não esta sendo reconhecida, diz coluna invalida.
> outra coisa, como isto é um resumo dos produtos, a lista final deve ser
> produto a produto, ou seja talvez o uso de distinct.
> Fazendo as querys separadas, ou seja uma soma, e outra vincula o movimento
> com o cadastro funciona, mas não tornaria o resultado, absolutamente
> ONLINE,
> pois o movimento é grande e corre-se o risco de entre uma listagem em tela
> e
> outra, haver grande divergencia, assim o ideal seria como voce fez.
> grato
> Artur
>
>
> "Sandro Souza" <escovadordebits em gmail.com>
> escreveu na mensagem
> news:64d5939a0812030838n23c21d25q83f92b06f84f363a em mail.gmail.com...
> Bom dia/tarde Artur.
>
> Acredito que faltou informar algum campo de data na tabela "MOV", caso
> contrário, como filtrar por período?
>
> Mas vamos supor que esse campo de data exista e que se chame "datamov".
>
> Tente esse código SQL:
>
> select
>  c.produto,
>  c.descricao,
>  sum(m.quantidade) quantidade,
>  sum(m.valor),
>  x.valor_total,
>  (x.valor_total/sum(m.valor)) relacao
> from
>  cad c,
>  mov m,
>  (select
>     sum(valor) valor_total
>   from
>     mov
>   where
>     (datamov between '2008-02-01' and '2008-03-30')) x
> where
>  (m.datamov between '2008-02-01' and '2008-03-30') and
>  (c.produto = m.produto) and
>  (x.produto = m.produto)
> group by
>  c.produto,
>  c.descricao,
>  x.valor_total
>
> Nesse caso, coloquei um período de 01/02/2008 até 30/03/2008, apenas para
> exemplificar.
>
> O SELECT mais interno, retorna apenas o somatório de todos os valores de
> todos os produtos dentro do período informado.
>
> Corrija-me se eu estiver enganado, mas a sua intenção era a de retornar o
> percentual do valor daquele produto em relação ao valor total de todos os
> produtos na última coluna?
>
> Se for, então tem que refazer esse cálculo, que seria:
> ((sum(m.valor)*100)/x.valor_total)
> percentual.
>
> Espero ter ajudado mais que atrapalhado. :D
>
> 2008/12/3 Artur Sanfins
> <artur.gmane em tcimix.com>
>
> > cenário:
> > MOV: produto,quantidade, valor
> > CAD:produto,descricao
> > como criar uma query que liste assim:
> >
> > produto,descricao, (soma de quantidade no periodo),(soma de valor no
> > periodo(1)),(soma de todos os produtos em valor(2)),( resultado (2)/(1))
> >
> > como resolver ?
> >
> > grato por sugestões
> >
> > Artur
> >
> >
> >
> >
> >
> >
> > ______________________________________________
> > 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
>
>
>
>
>
> ______________________________________________
> 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