GARANTIR DESCONTO

Fórum SQL de Select e Update complexa #377151

07/05/2010

0

Olá pessoal... estou aqui com um pequeno problema... sei resolvê-lo de uma forma mais trabalhosa, porém gostaria de saber se algum de vocês consegue contribuir com uma forma mais fácil de resolver isso.

Seguinte... tenho uma tabela de Pedidos e outra tabela de Produto_Pedido... onde são armazenados os itens, quantidades e valores dos produtos se relacionam a um unico pedido realizado por um cliente. O que preciso é Cancelar um pedido, sendo que a quantidade de todos estes itens deverá ser reposta no estoque... ou seja, se cancelo o pedido numero 5, vou até a tabela de Produto_Pedido relaciono todos os itens do pedido 5 e preciso devolver as quantidades a cada item da tabela de PRODUTOS no campo estoque. Pergunto, há alguma forma de fazer tudo isso numa única SQL? Tipo, fazer um Select de todos os itens do Pedido 5 e fazer um Update na tabela de produtos somando Produto.QuantidadeAtual + ItemPedido.Quantidade ??

Tabelas envolvidas:
PEDIDOS PRODUTO_PEDIDO PRODUTOS
+ CODIGO * COD_PEDIDO + CODIGO
* COD_PRODUTO DESCRICAO
QUANTIDADE ESTOQUE
VLR_UNITARIO

Fico no aguardo e desde já, obrigado pelas ajudas

Maikel
Maikel Scheid

Maikel Scheid

Responder

Posts

07/05/2010

Maikel Scheid

Desformatou a organização das tabelas do tópico anterior, seguem agora as mesmas organizadas uma abaixo da outra:

Tabelas envolvidas:
PEDIDOS
+ CODIGO

PRODUTO_PEDIDO
* COD_PEDIDO
* COD_PRODUTO
QUANTIDADE
VLR_UNITARIO

PRODUTOS
+ CODIGO
DESCRICAO
ESTOQUE
Responder

Gostei + 0

07/05/2010

Emerson Nascimento

tente sempre passar o maior número possível de informações a respeito do problema.

como você está na sala DELPHI, fica difícil adivinhar qual o banco de dados você está utilizando, e essa é uma informação crucial, visto que os bancos de dados têm características distintas.

de qualquer forma, vou te passar uma instrução que deve funcionar no SQL Server (talvez funcione no FB 2.x):

UPDATE PROD SET
  PROD.ESTOQUE = PROD.ESTOQUE + PEDI.QUANTIDADE
FROM
  PEDIDOS PED
INNER JOIN
  PRODUTO_PEDIDO PEDI ON PEDI.COD_PEDIDO = PED.CODIGO
INNER JOIN
  PRODUTOS PROD ON PROD.CODIGO = PEDI.COD_PRODUTO
WHERE
  PED.CODIGO = NUMERO_DO_PEDIDO_CANCELADO

ou assim:
UPDATE PROD SET
  PROD.ESTOQUE = PROD.ESTOQUE + PEDI.QUANTIDADE
FROM
  PRODUTOS PROD
INNER JOIN
  PRODUTO_PEDIDO PEDI ON PEDI.COD_PRODUTO = PROD.CODIGO
INNER JOIN
  PEDIDOS PED ON PED.CODIGO = PEDI.COD_PEDIDO
WHERE
  PED.CODIGO = NUMERO_DO_PEDIDO_CANCELADO



Responder

Gostei + 0

07/05/2010

Maikel Scheid

opa... desculpe Emerson, esqueci de colocar o banco de dados... foi mal

É justamente para SQL Server... no ambiente Delphi for .NET... ainda não testei a SQL, mas pela análise da sua SQL, creio de deve funcionar... logo mais faço a instrução e vou testar nas minhas páginas e volto a postar o resultado.

Obrigado pela ajuda...

Abraço
Responder

Gostei + 0

07/05/2010

Maikel Scheid

Emerson... acabei de testar o código na minha aplicação... funcionou 100%...

Problema resolvido... mais uma vez... muito obrigado pela sua ajuda.

Abraço

Maikel
Responder

Gostei + 0

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

Aceitar