【问题标题】:Complex SQL Update Statement across two tables, with condition within condition and calculation - Help Needed跨两个表的复杂 SQL 更新语句,条件和计算中的条件 - 需要帮助
【发布时间】:2018-09-11 19:17:52
【问题描述】:

两个表:

CART(CartID、UserID、DateCreated、ProductID、ProductName、Size、Price、QuantitySubtotalHoursWork

PRODUCTS(ProductID, Name, SDescription, Price, Size, Images, Thumbnail, Weight, LDescription, Stock, CategoryID, HoursWork)

我正在处理电子商务网站的购物车/购物车页面。具体来说: “+”链接按钮可将购物车中所选产品的数量增加 1,以及 稍后点击“-”链接按钮,将购物车中所选产品的数量减少 1。

除了 Quantity,Cart 表的 SubtotalHoursWork 字段也需要更新。小计:计算总订单价格。 HoursWork:计算预订时段所需的小时数。

到目前为止,我有一个 SQL 语句来检查 Products。Stock 的值 > 0

如果满足此条件,则会运行一条 SQL 语句来更新购物车, (数量 = 数量 + 1,小计 = @Subtotal + @Price WHERE CartID = @CartID)和产品(Stock = 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"

购物车中每件商品的购物车 ID、产品 ID、产品名称、尺寸、价格、数量、小计、工时和重量都存储在变量中,因此很容易访问。

【问题讨论】:

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


    【解决方案1】:

    如果语法正确,您的代码可能会起作用。子查询必须用括号括起来:

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

    【讨论】:

    • 太棒了,我的声明现在有效。我正在使用 "Dim cmd1 As SqlCommand = New SqlCommand" "cmd1.CommandText = 'Update...'" 我试图同时运行这两个语句,所以 cmd1.CommandText = "Update Statement 1" + "Update Statement 2" 但是当我这样做时,没有任何效果。有正确的方法吗?
    • 我创建了两个单独的命令,cmd1 和 cmd2,现在一切正常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    • 2011-02-13
    • 2011-03-19
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多