[firebase-br] Melhorar sentença SQL

tetraetila® tetraetila em gmail.com
Qua Maio 27 09:14:44 -03 2009


Olá Pessoal

Faço dois "select's" que extraem dados de duas tabelas A001005_TBL e 
A001028_TBL a cláusula where que diferencia um select do outro é apenas
A.a005_tipo = '4' ou A.a005_tipo = '1', tem como eu melhorar isto fazendo 
apenas uma sentença e não as duas? O mesmo critério eu utilizo para somar. O 
que eu quero é otimizar estas sentenças uma vez que as utilizo em vários 
outros locais.

Muito obrigado!

Adilson


Obs.: Sentenças abaixo:

Tipo = '1'

select A.A005_DMOV, A.A005_NFIN, A.A005_NFFI, A.A005_SERI, A.A005_SUBS, 
A.A005_EMIT, A.A005_VCON, A.A005_TIPO, B.A028_CFOP, B.A028_SEQU from 
A024005_tbl A, A024028_tbl B where A.A005_DMOV between '01.01.2008' and 
'31.01.2008' and A.A005_DMOV = B.A028_DMOV and A.A005_NFIN = B.A028_NFIN and 
A.A005_NFFI = B.A028_NFFI and A.A005_SERI = B.A028_SERI and A.A005_SUBS = 
B.A028_SUBS and A.A005_EMIT = B.A028_EMIT and A.A005_TIPO = '1' and 
B.A028_INTE <> 'N' order by A.A005_DMOV, A.A005_NFIN

Tipo = '4'

select A.A005_DMOV, A.A005_NFIN, A.A005_NFFI, A.A005_SERI, A.A005_SUBS, 
A.A005_EMIT, A.A005_VCON, A.A005_TIPO, B.A028_CFOP, B.A028_SEQU from 
A024005_tbl A, A024028_tbl B where A.A005_DMOV between '01.01.2008' and 
'31.01.2008' and A.A005_DMOV = B.A028_DMOV and A.A005_NFIN = B.A028_NFIN and 
A.A005_NFFI = B.A028_NFFI and A.A005_SERI = B.A028_SERI and A.A005_SUBS = 
B.A028_SUBS and A.A005_EMIT = B.A028_EMIT and A.A005_TIPO = '4' and 
B.A028_INTE <> 'N' order by A.A005_DMOV, A.A005_NFIN


Soma Tipo = '1'

select sum(A.A005_VCON) AS TOTAL from A024005_tbl A, A024028_tbl B where 
A.A005_DMOV between '01.01.2008' and '31.01.2008'  and A.A005_DMOV = 
B.A028_DMOV and A.A005_NFIN = B.A028_NFIN and A.A005_NFFI = B.A028_NFFI and 
A.A005_SERI = B.A028_SERI and A.A005_SUBS = B.A028_SUBS and A.A005_EMIT = 
B.A028_EMIT and A.A005_TIPO = '1' and B.A028_INTE <> 'N'

Soma Tipo = '4'

select sum(A.A005_VCON) AS TOTAL from A024005_tbl A, A024028_tbl B where 
A.A005_DMOV between '01.01.2007' and '31.12.2007' and A.A005_DMOV = 
B.A028_DMOV and A.A005_NFIN = B.A028_NFIN and A.A005_NFFI = B.A028_NFFI and 
A.A005_SERI = B.A028_SERI and A.A005_SUBS = B.A028_SUBS and A.A005_EMIT = 
B.A028_EMIT and A.A005_TIPO = '4' and B.A028_INTE <> 'N'





Mais detalhes sobre a lista de discussão lista