[firebase-br] Consulta Select muito complexa Help....
Luciano franca
luapfirebird em yahoo.com.br
Qui Jul 2 10:30:40 -03 2015
Pessoal passei dia todo otimizando um SQL que está muito lento
São duas Tabelas ::
Cadastro_MercadoriasCadastro_Precos
Na tabela tabela de "Cadastro_Precos" pode se ter varios codigos PK da tabela "Cadastro_Mercadorias"
Veja eu não posso usar "Sub-Select" pois o carregamento da Query Fica muito lento então devo fazer Case para Fazer Linhas Virar Colunas
Usando esse Primeiro Código
SELECT Cm.codigo, CM.mercadoria, GP.Descricao
, (Max(Case When (GP.Cod_Nome_Precos is Not Null And GP.Cod_Nome_Precos = '1') Then GP.PRECO_VENDA End)) As VENDA_VISTA
, (Max(Case When (GP.Cod_Nome_Precos is Not Null And GP.Cod_Nome_Precos = '2') Then GP.PRECO_VENDA End)) As VENDA_PRAZO
FROM cadastro_mercadorias Cm
left join CADASTRO_PRECOS GP on (GP.Cod_produto = CM.Codigo)
Group By 1, 2, 3
Não traz os preços para algumas Colunas e Eu preciso dos Preços para todas Todas Colunas não pode ter colunas com valores Nulosé possivel ver isso na imagen "SQL1.jpg" que está no Link : https://mega.co.nz/#!U1xEDZjY!tbkoON2LIJzC_DBb87X0tQls-ABz3Y0GEqpeBa_uJgo
Esse Segundo código funciona porém fica cerca de 60% mais lento por ter dois Left Join na Tabela "Cadastro_Precos"Eu não consigo fazer com apenas um Left Join sem "Sub-Select" se algum colega tiver uma ideia melhor fico muito agradecido.
SELECT Cm.codigo, CM.mercadoria, GP.Descricao
, (Max(Case When (GP.Cod_Nome_Precos is Not Null And GP.Cod_Nome_Precos = '1') Then GP.PRECO_VENDA Else Case When (GP2.Cod_Nome_Precos is Not Null And GP2.Cod_Nome_Precos = '1') Then GP2.Preco_Venda End End)) As VENDA_VISTA
, (Max(Case When (GP.Cod_Nome_Precos is Not Null And GP.Cod_Nome_Precos = '2') Then GP.PRECO_VENDA Else Case When (GP2.Cod_Nome_Precos is Not Null And GP2.Cod_Nome_Precos = '2') Then GP2.Preco_Venda End End)) As VENDA_PRAZO
FROM cadastro_mercadorias Cm
left join CADASTRO_PRECOS GP on (GP.Cod_produto = CM.Codigo)left join CADASTRO_PRECOS GP2 on (GP2.Cod_produto = CM.Codigo)
Group By 1, 2, 3
Nesse Link :: https://mega.co.nz/#!U1xEDZjY!tbkoON2LIJzC_DBb87X0tQls-ABz3Y0GEqpeBa_uJgo
tem o Banco em FB 2.5 e também o Link para criar as tabelas e testar.
Fico a Atenção dos Colegas.
Mais detalhes sobre a lista de discussão lista