RES: RES: [firebase-br] Consulta Muito Demorada com Left Join

Jony jonyridel em yahoo.com.br
Seg Ago 1 10:05:28 -03 2005


Isso mesmo Fausto eu fiz o case de forma errada, corrigi em outro e-mail que
enviei após este.
Mesmo assim obrigado pela correção.

Jony Ridel


-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Fausto
Enviada em: sexta-feira, 29 de julho de 2005 18:09
Para: FireBase
Assunto: Re: RES: [firebase-br] Consulta Muito Demorada com Left Join

Ué.. vamos supor que ME.OPERACAO = 'E',    seja entrada e ME.OPERACAO = 
'S'  saida
Se for assim o case abaixo não esta fazendo distinção do tipo de 
operação, esta somando tudo em saidas.
Jony, me corrija se eu estiver errado.

Fausto


Jony escreveu:

>Valdir eu errei no Select de soma coloquei um Case só qdo era pra ter dois
>um para cada situação.
>    CASE ME.OPERACAO 
>       WHEN 'E' THEN SUM (E.QUANTIDADE),
>       ELSE 0 END AS SAIDAS
>    END,
>    CASE ME.OPERACAO 
>       WHEN 'S' THEN SUM (E.QUANTIDADE),
>       ELSE 0 END AS SAIDAS
>    END
>
>-----Mensagem original-----
>De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
>nome de Jony
>Enviada em: sexta-feira, 29 de julho de 2005 17:35
>Para: 'FireBase'
>Assunto: RES: [firebase-br] Consulta Muito Demorada com Left Join
>
>Experimente fazer uma procedure
>
>Parâmetros de Entrada:
>PI_DATA
>
>Parâmetros de saída:
>PO_CODPRO,
>PO_DESCRICAO,
>PO_SALDO
>
>Variáveis:
>Vn_Entradas  
>Vn_Saidas
>
>// varrendo o cadastro de produtos
>For SELECT P.CODIGO, 
>           P.DESCRICAO
>    FROM PRODUTOS P INTO :PO_CODPRO, :PO_DESCRICAO do
>Begin
>  SELECT
>    CASE ME.OPERACAO 
>       WHEN 'E' THEN SUM (E.QUANTIDADE) END AS ENTRADAS,
>       ELSE SUM(ME.QUANTIDADE) END AS SAIDAS
>    END
>  FROM 
>    MOVIESTOQUE ME
>  WHERE
>    ME.PRODUTO = :PO_CODPRO
>  AND 
>    ME.DATA > :PI_DATA
>  INTO :VN_ENTRADAS, :VN_SAIDAS;
>  
>  PO_SALDO := VN_ENTRADAS - VN_SAIDAS;
>
>  SUSPEND;
>
>End;
>
>Depois é so fazer um select da procedure
>SELECT * FROM PROCEDURE("DATA")
>
>Espero ter ajudado,
>
>----------------------------
>Jony Ridel
>Grupo Êxito - Salvador - BA
>----------------------------
>
>-----Mensagem original-----
>De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
>nome de Valdir Dill
>Enviada em: sexta-feira, 29 de julho de 2005 17:03
>Para: lista em firebase.com.br
>Assunto: [firebase-br] Consulta Muito Demorada com Left Join
>
>Tenho a tabela PRODUTOS com os campos CODIGO e ATUAL. ATUAL é o campo onde 
>gravo o saldo do estoque do produto. Tenho outra tabela MOV_ESTOQUE com os 
>campos NR_SEQUENCIAL, PRODUTO(gravo o código do produto), OPERACAO(gravo
'E'
>
>ou 'S') e QUANTIDADE.
>Como se pode ver são tabelas básicas de cadastro e movimento de produtos.
>Minha dúvida/necessidade: preciso fazer um relatório que onde seja listado
o
>
>CODIGO e saldo ATUAL de cada produto. Se fosse só isso seria simples, pois 
>eu imprimiria apenas os dois campos (CODIGO e ATUAL) do cadastro de 
>produtos. O problema é que preciso que esse saldo seja com posição em uma 
>data determinada pelo usuário. Assim, tenho que pegar o saldo ATUAL do 
>cadastro de produtos e somar as saídas('S') e diminuir as entradas('E') que

>foram feitas na tabela MOV_ESTOQUE após a data informada pelo usuário.
>Minha dúvida é como montar a constula SQL.
>Já tentei de várias formas e não dá certo. A única forma é que consegui foi

>a forma abaixo
>
>"
>SELECT P.CODIGO, P.DESCRICAO, P.UNIDADE, P.MARCA, P.ESTOQUEMINIMO, P.ATUAL,

>CASE ME.OPERACAO WHEN 'E' THEN SUM (E.QUANTIDADE) END AS ENTRADAS, CASE 
>ME.OPERACAO WHEN 'S' THEN SUM(ME.QUANTIDADE) END AS SAIDAS FROM PRODUTOS P 
>INNER JOIN MOVIESTOQUE ME ON (ME.PRODUTO = P.CODIGO AND ME.DATA 
> >:VDataPosicao) P.CODIGO, P.DESCRICAO, P.UNIDADE, P.MARCA,
P.ESTOQUEMINIMO,
>
>P.ATUAL
>"
>
>O problema é que essa consulta fica muito, mas muito demorada mesmo, 
>tornando inviável dessa forma.
>
>Já tentei o INNER em vez de LEFT, mas daí não mostra os produtos que não 
>tiveram movimento no período.
>
>
>Utilizo o Firebird 1.5. Se você conhece bem o esse BD, por gentileza, me 
>ajude a fazer esse relatório. Se tiver qualquer dica que possa me dar uma 
>luz, já seria bom.
>
>Obrigado.
>
>
>
>
>
>  
>

______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa

-- 
No virus found in this incoming message.
Checked by AVG Anti-Virus.
Version: 7.0.338 / Virus Database: 267.9.7/60 - Release Date: 28/7/2005
 

-- 
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.338 / Virus Database: 267.9.7/60 - Release Date: 28/7/2005
 


	
	
		
_______________________________________________________ 
Yahoo! Acesso Grátis - Internet rápida e grátis. 
Instale o discador agora! http://br.acesso.yahoo.com/





Mais detalhes sobre a lista de discussão lista