[firebase-br] Duvida comando Case

Daniel Maranhão danielmachado em agetop.goias.gov.br
Seg Jun 27 13:38:11 -03 2011


Obrigado Eduardo

Vou testar
----- Original Message ----- 
From: "Eduardo Jedliczka" <edujed em gmail.com>
To: "FireBase" <lista em firebase.com.br>
Sent: Monday, June 27, 2011 11:29 AM
Subject: Re: [firebase-br] Duvida comando Case


faça um teste.... (não tenho suas tabelas aqui para testar, então pode
haver alguns erros)

select saida.idsaida,
pessoa.nome as cliente,
produto.nome as produto,
produto.servico,
saida.data_saida,
saida.qnt_atendida as quantidade,
entrada.preco_unit as preco,
saida.qnt_solicitada * entrada.preco_unit as total
where  pessoa.idpessoa = 61
from saida
left outer join produto on saida.produto_id = produto.idproduto
left outer join pessoa on saida.pessoa_id = pessoa.idpessoa
left outer join entrada on  entrada.produto_id = produto.idproduto
// assim vai trazer todas as entradas... acho que será preciso trazer
apenas o valor da "maior entrada" correto ?
where  pessoa.idpessoa = 61 and produto.servico = 1

union all

select saida.idsaida,
pessoa.nome as cliente,
produto.nome as produto,
produto.servico,
saida.data_saida,
saida.qnt_atendida as quantidade,
estoque.ult_preco as preco
saida.qnt_solicitada * estoque.ult_preco as total
left outer join produto on saida.produto_id = produto.idproduto
left outer join pessoa on saida.pessoa_id = pessoa.idpessoa
left outer join estoque on estoque.produto_id = produto.idproduto
where  pessoa.idpessoa = 61 and produto.servico <> 1

order by saida.data_saida


==========================
Eduardo Jedliczka
Apucarana - Pr
==========================




Em 27 de junho de 2011 10:16, Daniel Maranhão
<danielmachado em agetop.goias.gov.br> escreveu:
> Eduardo,
>
> Concordo que minha modelagem não é das melhores, pois eu estou aprendendo, 
> e
> sem condições de fazer uma nova.
>
> esse produto.servico era pra ser um tag de controle, mas não está
> funiconando,
>
> a ideia do criterio é
> quando o produto for serviço (por isso a tag), ele pega o preço da tabela 
> de
> entrada, quando não for serviço, pegar da tabela estoque.
>
> ----- Original Message ----- From: "Eduardo Jedliczka" <edujed em gmail.com>
> To: "FireBase" <lista em firebase.com.br>
> Sent: Monday, June 27, 2011 9:55 AM
> Subject: Re: [firebase-br] Duvida comando Case
>
>
> acho que há algum furo na sua lógica... a cláusula "WHEN
> produto.servico = 1" está igual para ambas as situações.
>
> Outra coisa, reorganize o seu SQL.. será que não seria o caso de você
> fazer um UNION (onde cada um traz os dados com os joins corretos)?
> Mais uma coisa, você realmente precisa daquele DISTINCT pois parece há
> algum problema na modelagem do seu sistema.
>
> PS: como não entendi direito o seu exemplo (há campos retornados no
> sql que não constam no modelo das tabelas) e sua necessidade real
> (qual é o critério para trazer ORA um valor ORA outro), não há muito
> como ajudar...
>
> ==========================
> Eduardo Jedliczka
> Apucarana - Pr
> ==========================
>
>
>
>
> Em 27 de junho de 2011 09:45, Daniel Maranhão
> <danielmachado em agetop.goias.gov.br> escreveu:
>>
>> Senhores, Bom Dia
>>
>> Tenho as seguintes tabelas:
>>
>> Produto:
>> - IDPRODUTO
>> - Nome
>>
>> Pessoa
>> - IDPESSOA
>> - NOME
>>
>> Entrada:
>> - IDENTRADA
>> - PRODUTO_ID
>> - PESSOA_ID
>> - DATA_ENTRADA
>> - QUANTIDADE
>> - VALOR UNITARIO
>> - VALOR TOTAL
>>
>> SAIDA
>> - IDSAIDA
>> - DATA_SAIDA
>> - QUANTIDADE_SAIDA
>> - PRODUTO_ID
>> - PESSOA_ID
>>
>> ESTOQUE
>> - SALDO
>> - ULT_PRECO
>> - PRODUTO_ID
>>
>>
>> Qual é o problema. Preciso fazer um relatorio de saida. Nesse relatório 
>> de
>> saida, eu pegava o ultimo preço da tabela estoque. Até ai tudo bem. O SQL
>> Funcionou, está funcionando.
>> Porém, agora o meu cliente me pediu uma rotina na qual eu as vezes, vou
>> precisar pegar o preço, da tabela entrada, e nesse mesmo relatório, 
>> alguns
>> items, eu vou pegar o preço da tabela estoque
>> e alguns items vou pegar da tabela entrada. Porém não estou conseguindo
>> fazer esse vinculo. Alguem pode me ajudar ? O SQL deve me retornar todos
>> os
>> items que uma determina pessoa utilizou
>> O SQL que estou usando é:
>>
>> select distinct saida.idsaida,
>> pessoa.nome as cliente,
>> produto.nome as produto,
>> produto.servico,
>> saida.data_saida,
>> saida.qnt_atendida as quantidade,
>> CASE
>> WHEN produto.servico = 1
>> then entrada.preco_unit
>> else estoque.ult_preco
>> end as preco,
>> case
>> WHEN produto.servico = 1
>> then saida.qnt_solicitada * entrada.preco_unit
>> else saida.qnt_solicitada * estoque.ult_preco
>> end as total
>>
>> from saida, produto, pessoa, estoque, ENTRADA
>>
>> where saida.produto_id = produto.idproduto
>> and saida.pessoa_id = pessoa.idpessoa
>> and estoque.produto_id = produto.idproduto
>> and pessoa.idpessoa = 61
>> order by saida.data_saida
>>
>>
>> Fico agradecido por qualquer tipo de ajuda.
>>
>> Atc,
>>
>> Daniel.
>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>

______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: 
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa 





Mais detalhes sobre a lista de discussão lista