0

我有以下架构:

产品

  id: int pk ai
  title: string
  available: int
  left: int

订购

  id: int pk ai
  status: int

订单项

  id: int pk ai
  order_id: int fk Order.id
  product_id: int fk Product.id
  amount: int

因此,当购买产品时,会创建一个包含一个或多个订单项目的订单。订单状态指示订单是否已完成。

我需要更新所有产品的“左”字段。它应该通过将 中的所有产品数量相加来计算order_items,对于具有特定状态(例如 status=2)的订单,并从Products表中的“可用”值中减去结果(即,如果一个产品有 10 个可用,并且有一个已完成的订单列出该产品的数量=3,结果left应为 7。)

理想情况下,我想使用一个 SQL 查询来做到这一点。

4

1 回答 1

0

这很简单.. 只需做一件事,从表 Order_item 中获取金额的总和,其中 Order 表中的 OrderId 的状态 = 2(我想这是完整状态的代码)那么你需要从可用值中减去。以下是对此的查询 -

update Product p
set `left` = available - (select sum(amount) 
                          from orderItem oi, `order` o
                         where oi.order_id = o.id
                           and product_id = p.id
                           and o.status = 2
                           )

这应该根据需要更新您的 Product 表。

于 2013-05-13T16:21:17.033 回答