[firebase-br] Ajuda pra montar um SQL mais rápido

Marcelo Macedo marcelofmacedo em gmail.com
Sex Fev 22 23:49:32 -03 2008


Ai cara o problema é que vc esta enfianto muitos Selects um dentro do outro
(tipo pra achar o telefone FK_FONE,
) e tambem tenta usar o FROM mais simples, colocando apenas as tabelas e
apelido delas, e junção vc faz no WHERE, tipo :
--> FROM VENDA_PEDIDO VP2
LEFT JOIN CLIENTE C ON (C.IDCLIENTE = VP2.IDCLIENTE)
--POR--> FROM VENDA_PEDIDO VP2, CLIENTE C
where C.IDCLIENTE = VP2.IDCLIENTE
   and...
 * pois sempre a venda vai ter um cliente.

Troca isso : *WHERE ( VP1.DATA_EMISSAO BETWEEN :PDATA1 AND
:PDATA2 ) )
AND ( C.STATUS =  'A')
AND ( VP2.DATA_EMISSAO BETWEEN :PDATA1 AND :PDATA2 )
*  por *WHERE ( VP1.DATA_EMISSAO BETWEEN :PDATA1 AND
:PDATA2 ) )
AND ( C.STATUS =  'A')
AND ( VP2.DATA_EMISSAO = VP1.DATA_EMISSAO )
*


*WHERE ( VP2.IDCLIENTE IN( SELECT VP1.IDCLIENTE FROM VENDA_PEDIDO_ITENS VPI1
                         LEFT JOIN VENDA_PEDIDO VP1 ON (VP1.IDVENDA_PEDIDO
= VPI1.IDVENDA_PEDIDO)
                         LEFT JOIN PRODUTO P1 ON (P1.IDPRODUTO =
VPI1.IDPRODUTO)
                         WHERE ( VP1.DATA_EMISSAO BETWEEN :PDATA1 AND
:PDATA2 ) )
AND ( C.STATUS =  'A')
AND ( VP2.DATA_EMISSAO BETWEEN :PDATA1 AND :PDATA2 ) --> Isso ta muito doido
o Seelect ta parcendo redundante...
*



Mais detalhes sobre a lista de discussão lista