Fórum Update usando 2 tabelas #444431

31/05/2013

0

Boa Tarde, uso Delphi 7 x Firebird. Quero atualizar o estoque fisico, subtraindo os produtos vendidos, para isso tenho a tabela itens_vendas, onde estão os produtos vendidos e a tabela produtos, onde estão os produtos com suas quantidades, como seguem:

tabela itens_vendas tabela produtos
------------------- ---------------
NR_VENDA CDPRODUTO
DT_VENDA DCPRODUTO
CANCELADO VLPRODUTO
COD_ITEM_VENDA QTESTOQUE
COD_PROD QTMINIMA
QT_ITEM CDFORNECEDOR
VL_ITEM COD_PROD_PRECO
VL_TOTAL

Preciso atualizar o QTESTOQUE da tabela produto, diminuindo pelo QT_ITEM da tabela itens_vendas, desde que o campo CANCELADO seja igual a 'N', ou seja se sim, esse item da venda foi cancelado.
Alguma idéia?

Jaime
Jaime Daltoe

Jaime Daltoe

Responder

Posts

31/05/2013

Claudia Nogueira

Se for fazer usando algum parâmetro como número da venda, poderia fazer assim:
UPDATE produtos
SET QTESTOQUE = QTESTOQUE - 
(SELECT SUM(IV.QT_ITEM) FROM itens_vendas iv WHERE (iv.cancelado = 'N') and (iv.cod_prod = produtos.cdproduto) and (nr.venda =:nr_venda))


Agora se for fazer somando todos os itens da tabela, pra somente rodar o script pra acertar o estoque, seria mais ou menos assim:
UPDATE produtos
SET QTESTOQUE = QTESTOQUE - 
(SELECT SUM(IV.QT_ITEM) FROM itens_vendas iv WHERE (iv.cancelado = 'N') and (iv.cod_prod = produtos.cdproduto))


Se não for isso, me avisa, pra eu ver onde errei.

Responder

Gostei + 0

01/06/2013

Jaime Daltoe

Obrigado! deu certo e era a primeira opção que eu queria. Porém, agora tenho que resolver outro problema; eu coloquei dentro de uma SP e ela esta demorando uns 15 segundos pra atualizar.
Responder

Gostei + 0

01/06/2013

Claudia Nogueira

NR_VENDA e COD_PROD são FK não itens_vendas?
Se não são, tem índice para esses dois campos?
Responder

Gostei + 0

02/06/2013

Jaime Daltoe

Oa campos NR_VENDA e COD_PRO da tabela ITENS_VENDAS são FK e os dois tem indices.
Responder

Gostei + 0

31/07/2013

José

Olá amigo Jaime, teve algum avanço no seu problema ou conseguiu soluciona-lo ?
Responder

Gostei + 0

01/08/2013

Jaime Daltoe

Olá José Ricardo, não está tão lento, mas eu esperava uma melhor performance.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar