[firebase-br] Ajuda com UPDATE
Sandro Souza
escovadordebits em gmail.com
Ter Fev 2 14:52:22 -03 2010
Bom dia/tarde Ronan.
Grande Ronan, acredito que esteja apenas faltando a cláusula WHERE do
próprio UPDATE, pois da forma que está estruturado esse comando, todos os
estoques serão atualizados, mas provavelmente nem todos os estoques
participaram da venda 31, e dessa forma, todos os estoques que não
participaram da venda 31 ficarão zerados, ou quem sabe até com NULL.
Se for essa a causa real do problema, então teste o seguinte comando:
UPDATE ESTOQUE E SET
E.ESTOQUE_ATUAL = E.ESTOQUE_ATUAL - (
SELECT
V.QTDPRODUTO
FROM
VENDAS_PRODUTOS V
WHERE
(V.ID_PRODUTO = E.ID)AND
*(V.ID_ESTOQUE = E.ID_ESTOQUE)AND*
(V.ID_VENDAS = 31))
*WHERE
EXISTS(
SELECT
V2.ID_ESTOQUE
FROM
VENDAS_PRODUTOS V2
WHERE
(V2.ID_VENDAS = 31)AND
(V2.ID_ESTOQUE = E.ID_ESTOQUE))*
Notei também que faltou amarrar o código do estoque na pesquisa da
quantidade de produto (se eu estiver enganado, por favor me desculpe).
Acredito que a condição que está na cláusula WHERE do UPDATE vá limitar a
alteração apenas aos estoques que realmente participaram daquela venda,
deixando os demais estoques intactos, mas nada como um bom e velho teste.
Espero ter ajudado mais que atrapalhado. :D
Em 2 de fevereiro de 2010 10:43, Ronan
<ronan em antarescomputadores.com.br>escreveu:
> Prezados,
> Estou com o seguinte problema:
> Tenho uma tabebela de estoque (ESTOQUE) com os campos Estoque_Atual,
> ID_estoque
> e uma tabela de produtos vendidos (VENDA_PRODUTOS) com os campos ID_Venda,
> QuantidadeVendida, ID_Estoque.
>
> Preciso atualizar o campo estoque_atual da tabela de estoque com base nos
> produtos vendidos na tabela de ProdutosVendidos.
>
> vou informar o numero da venda e fazer a atualização.
>
> Suponha que o numero da venda seja 31
>
> Tentei várias sintax com o update, mas não consegui.
>
> A ultima foi essa:
>
> UPDATE ESTOQUE
> set
> ESTOQUE.ESTOQUE_ATUAL = ESTOQUE.ESTOQUE_ATUAL -
> (SELECT VENDAS_PRODUTOS.QTDPRODUTO from VENDAS_PRODUTOS
> WHERE VENDAS_PRODUTOS.ID_PRODUTO = ESTOQUE.ID and
> VENDA_PRODUTOS.ID_VENDAS = 31)
>
> O problema é que ele atualiza corretamente os produtos que estão no estoque
> mas zera todos os outros produtos
>
> Veja abaixo: Foram vendidas 40 unidades do produto B na venda 31, e nenhuma
> unidade dos outros produtos.
> Os produtos A e C tiveram suas quantidades zeradas indevidamente.
>
> Tabela de estoque (Antes da atualização)
> Depois
> produto quantidade
> produto quantidade
> A 30
> A null (incorreto)
> B 50
> B 10 (correto)
> C 80
> C null (incorreto)
>
>
>
> ______________________________________________
> 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