跨两个表的复杂SQL更新语句,条件和计算条件 - 需要帮助

时间:2018-04-02 14:53:36

标签: sql asp.net sql-update conditional-statements

两张桌子:

CART(CartID,UserID,DateCreated,ProductID,ProductName,尺寸,价格,数量小计营业时间

产品(产品ID,名称,标注,价格,尺寸,图像,缩略图,重量,LDescription,库存,CategoryID,营业时间

我正在开发电子商务网站的购物车/购物篮页面。特别: “+”链接按钮可在购物车中将所选产品的数量增加1,并且 稍后使用“ - ”链接按钮将购物车中所选产品的数量减少1。

数量外,还需要更新购物车表的小计 HoursWork 字段。小计:计算总订单总价。营业时间:计算预订时间所需的小时数。

到目前为止,我有一个SQL语句来检查产品。库存获取值> 0

如果满足此条件,则会运行SQL语句来更新Cart, (数量 =数量+ 1,小计 = @Subtotal + @Price WHERE CartID = @CartID)和产品(库存 = Stock - 1 WHERE ProductID = @ProductID)。

我正在努力为购物车添加 HoursWork 。所以我创建了一个新的SQL语句进行测试。我需要Cart.HoursWork字段,在购物车中添加同一ProductID的Products.HoursWork字段值。

到目前为止,我有:

"UPDATE Cart
SET HoursWork = HoursWork + 
                SELECT HoursWork
                FROM Products
                WHERE Products.ProductID = Cart.ProductID
WHERE CartID = @CartID"

早些时候我尝试过:

"UPDATE Cart
SET HoursWork = Cart.HoursWork + Product.HoursWork
                WHERE ProductID = @ProductID
FROM Cart, Products
WHERE CartID = @CartID"

购物车中每件商品的cartID,ProductID,ProductName,尺寸,价格,数量,小计,工时和重量都存储在易于访问的变量中。

1 个答案:

答案 0 :(得分:0)

如果语法正确,也许你的代码会起作用。子查询必须括在括号中:

UPDATE Cart
    SET HoursWork = (HoursWork + 
                     (SELECT p.HoursWork
                      FROM Products p
                      WHERE p.ProductID = Cart.ProductID
                     )
                    )
WHERE CartID = @CartID;