【问题标题】:SQL Update Query set QuantitySQL 更新查询集数量
【发布时间】:2017-12-13 18:57:13
【问题描述】:

我正在尝试创建一个查询来更新我的产品数量列。当客户结账时,他们会在我的订单表中创建一行,然后在 orderdetails 中为所购买的每件商品创建一行。

我有三个包含以下列的表格

  1. 订单(ID、数量)
  2. orderdetails(ID、OrderID、ProductID、Quantity)“OrderID 和 ProductID 是外键”
  3. 产品 (ID)

我希望查询看起来像这样,这是我目前所拥有的。

UPDATE products SET Quantity = Quantity - orderdetails.Quantity INNER JOIN orderdetails ON products.ID = orderdetails.ProductID WHERE orderdetails.OrderID = orders.ID

或

UPDATE products SET Quantity = Quantity - orderdetails.Quantity WHERE ID IN (SELECT ProductID FROM orderdetails WHERE OrderID IN (SELECT ID FROM orders WHERE ID = 104))

MySQL 错误为 #1054 - 'field list' 中的未知列 'orderdetails.Quantity'

我仍然是初学者,希望能在正确的方向上轻推一下,谢谢。 如果需要任何其他信息,请告诉我。

【问题讨论】:

  • 我注意到您删除了 sql-server 标记。我应该删除我的答案还是在 mysql 中工作?
  • 您好感谢您帮助我。我以 104 为例,因为它存在于我的数据库中,稍后将替换为会话变量。我已尝试过您的查询,但收到了语法错误,目前正在尝试解决。他们看起来应该为你工作。我发现的唯一错误是 ProductId 应该是 ProdcutID。

标签: php mysql


【解决方案1】:
declare @orderID int =104 -- you can set anywhere

update products set 
Quantity = Quantity - ordtl.Quantity from products p
inner join orderdetails ordtl on ordtl.ProductID = p.ID
inner join orders o on o.ID = ordtl.OrderID 
where o.ID = @orderID

--如果你知道订单号,你可以做你想做的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多