内容如下:
有三个表,Proudct(货物),Order(订单),OrderProductList(货物跟订单的对照表)。
即当一个用户选择了几种货物,每种选择了若干个,然后下订,就在Order里产生一个订单,假若选择了N种货物,就在OrderProductList里产生N条记录,OrderProductList表里,有字段OrderID, ProductID, Count,分别记录了订单号,货物号和订购的数量,即记录了某一订单的某一货物的数量,当产生一个订单时,这个订单所包含的货物在会从Product中提取,即Product表中对应种类的货物会减少对应的数量。
好了问题如下:
当一个订单取消时,这个订单的货物应该回到Product表中去,即Product表中对应货物的数量应该增加。因为一个订单包含的OrderPrudct记录有多条,那么我删除一个订单时(订单取消),这些OrderProductList里的货物怎么样使用一次更新的办法全部回到Product里呢?我使用过下面这条语句,但行不通。请各位帮忙。UPDATE Product
SET AmountWhole = AmountWhole +
(SELECT [OrderProductList].[Amount]
FROM [OrderProductList]
WHERE [OrderProductList].[OrderID] = 52)
WHERE (ID IN
(SELECT [OrderProductList].[ProductID]
FROM [OrderProductList]
WHERE [OrderProductList].[OrderID] = 52))其中52为订单号
有三个表,Proudct(货物),Order(订单),OrderProductList(货物跟订单的对照表)。
即当一个用户选择了几种货物,每种选择了若干个,然后下订,就在Order里产生一个订单,假若选择了N种货物,就在OrderProductList里产生N条记录,OrderProductList表里,有字段OrderID, ProductID, Count,分别记录了订单号,货物号和订购的数量,即记录了某一订单的某一货物的数量,当产生一个订单时,这个订单所包含的货物在会从Product中提取,即Product表中对应种类的货物会减少对应的数量。
好了问题如下:
当一个订单取消时,这个订单的货物应该回到Product表中去,即Product表中对应货物的数量应该增加。因为一个订单包含的OrderPrudct记录有多条,那么我删除一个订单时(订单取消),这些OrderProductList里的货物怎么样使用一次更新的办法全部回到Product里呢?我使用过下面这条语句,但行不通。请各位帮忙。UPDATE Product
SET AmountWhole = AmountWhole +
(SELECT [OrderProductList].[Amount]
FROM [OrderProductList]
WHERE [OrderProductList].[OrderID] = 52)
WHERE (ID IN
(SELECT [OrderProductList].[ProductID]
FROM [OrderProductList]
WHERE [OrderProductList].[OrderID] = 52))其中52为订单号
解决方案 »
- 关于DateDiff函数
- 大家给我一个asp.net上传图片的例子
- 这个概念我到那去找啊?
- datagrid可以绑定Session吗?
- 为什么TextBox的EnableViewState已经设置成了FALSE,Textbox在回发之后还是可以保存Textbox中的输入的内容?
- WORD文件问题,怎么存储不了?????????
- 100分请大家评评是SVG好还是VML好
- 控制器如何获取Html.DropDownList选择的值 不提交获取像不用mvc一样SelectedIndexChanged 方法的效果
- tfs 2010 服务器
- href 参数的问题
- 谁能给我讲讲“insert into openrowset”?
- 冰天雪地裸体倒立单脚朝地旋转360度哭求一个功能的实现
from Product p
Inner join [OrderProductList] op
On p.[ProductID] = op.[ProductID]
where op.[OrderID] = 52
create procedure Cancel_Product
(
@OrderID varchar(100)
)
AS
BEGIN
SET NOCOUNT ON
begin tran
begin
update Product set AmountWhole=AmountWhole+Count from Product a,OrderProductList b
where a.ProductID=b.ProductID and b.OrderID=@OrderID
end
begin
delete from OrderProductList where OrderID=@OrderID
end
commit tran
IF @@ERROR <> 0
rollback tran
end
go--调用
exec Cancel_Product '52'--因为考虑到取消时可能会失败,所以要加事物,已调试通过,需根据具体情况再少做修改即可。