[firebase-br] Procedure
Caçula
info em cacula.ind.br
Qua Set 20 10:36:17 -03 2006
Kléber, muito obrigado...
Deu certinho, era isso mesmo que eu queria...
Obrigado pelo pessoal que também postou, que também deram sugestões que
enriqueceram meus conhecimentos....
Valeu mesmo galera.
Abraço...
Alexandre Gonçalves
Kléber Caneva escreveu:
> Acho que o problema é porque você não está realicionando uma tabela com a
> outra, e ele está retornando todo o cruzamento entre as tabelas.
>
> FOR
> SELECT P.COD_PRODUTO, MAX(D.VR_UNIT) VR_UNIT, MAX(P.QUANTIDADE)
> FROM T_PROD_PEDIDO P
> LEFT JOIN T_PRODUTO D ON (P.COD_PRODUTO = D.COD_PRODUTO)
> WHERE P.DT_EMISSAO BETWEEN :DAT1 AND :DAT2
> GROUP BY P.COD_PRODUTO
> ORDER BY MAX(P.QUANTIDADE) DESC
> INTO :CODIGO, :VALOR, :QUANT DO
>
> []´s
>
> Kléber Caneva
>
> ----- Original Message -----
> From: "Caçula" <info em cacula.ind.br>
> To: "FireBase" <lista em firebase.com.br>
> Sent: Wednesday, September 20, 2006 8:58 AM
> Subject: Re: [firebase-br] Procedure
>
>
> Rubem,
> Já tinha feito isso. O problema, é que vai me retornar o maior valor que
> tiver, e não o valor verdadeiro da mercadoria, ou seja, todas as
> mercadorias vão sair com o mesmo valor.
>
>
> Rubem Nascimento da Rocha escreveu:
>
>> Olha a procedure abaixo e compare ela depois com o código que vc mandou, e
>> vc vai perceber o que vc deixou de fazer:
>>
>> CREATE PROCEDURE PRODUTOS
>> (
>> DAT1 DATE,
>> DAT2 DATE
>> )
>> RETURNS
>> (
>> CODIGO INTEGER,
>> QUANT NUMERIC(15,3),
>> VALOR NUMERIC(15,3)
>> )
>> AS
>> BEGIN
>> FOR SELECT P.COD_PRODUTO, MAX(D.VR_UNIT) VR_UNIT, MAX(P.QUANTIDADE)
>> FROM T_PROD_PEDIDO P, T_PRODUTO D
>> WHERE P.DT_EMISSAO BETWEEN :DAT1 AND :DAT2
>> GROUP BY P.COD_PRODUTO
>> ORDER BY MAX(P.QUANTIDADE) DESC
>> INTO :CODIGO, :VALOR, :QUANT DO
>> BEGIN
>> SUSPEND;
>> END
>> END
>>
>> Sds.
>>
>>
>>
>>
>>> From: Caçula <info em cacula.ind.br>
>>> Reply-To: FireBase <lista em firebase.com.br>
>>> To: Firebird <lista em firebase.com.br>
>>> Subject: [firebase-br] Procedure
>>> Date: Wed, 20 Sep 2006 08:36:24 -0300
>>>
>>> Bom dia lista.
>>>
>>> Estou desenvolvendo uma procedure, para selecionar os produtos mais
>>> vendidos. Estou fazendo uma seleção da tabela de produtos do pedido, mas
>>> também preciso do valor unitário que consta no cadastro do produto, mas
>>> não
>>> estou conseguindo. Veja como ficou
>>>
>>> CREATE PROCEDURE PRODUTOS (
>>> DAT1 DATE,
>>> DAT2 DATE)
>>> RETURNS (
>>> CODIGO INTEGER,
>>> QUANT NUMERIC(15,3),
>>> VALOR NUMERIC(15,3))
>>> AS
>>> begin
>>> /* Procedure Text */
>>> FOR SELECT P.COD_PRODUTO, D.VR_UNIT, MAX(P.QUANTIDADE) FROM
>>> T_PROD_PEDIDO
>>> P, T_PRODUTO D
>>> WHERE P.DT_EMISSAO BETWEEN :DAT1 AND :DAT2
>>> GROUP BY P.COD_PRODUTO
>>> ORDER BY MAX(P.QUANTIDADE) DESC INTO :CODIGO, :VALOR, :QUANT
>>> DO
>>> suspend;
>>> end
>>>
>>> Se deixar assim, dá erro, e se colocar o D.VR_UNIT no GROUP BY, ele me
>>> retorna informação errada. Como que faço pra agrupar por código de
>>> produto,
>>> e conseguir pegar o VR_UNIT da tabela de produto.
>>>
>>> Obrigado
>>>
>>> Alexandre Gonçalves
>>>
>>>
>>
>>
>>> ______________________________________________
>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.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
>>>
>>>
>> _________________________________________________________________
>> MSN Busca: fácil, rápido, direto ao ponto. http://search.msn.com.br
>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.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
>>
>>
>>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.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
>
> E-mail classificado pelo Identificador de Spam Inteligente Terra.
> Para alterar a categoria classificada, visite
> http://mail.terra.com.br/protected_email/imail/imail.cgi?+_u=kdcc&_l=1,1158753832.513731.20274.caneria.hst.terra.com.br,6463,Des15,Des15
>
> Esta mensagem foi verificada pelo E-mail Protegido Terra.
> Scan engine: McAfee VirusScan / Atualizado em 19/09/2006 / Versão:
> 4.4.00/4855
> Proteja o seu e-mail Terra: http://mail.terra.com.br/
>
>
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.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
>
>
Mais detalhes sobre a lista de discussão lista