首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL:按其相关行更新字段?

SQL:按其相关行更新字段?
EN

Stack Overflow用户
提问于 2013-05-13 16:04:33
回答 1查看 63关注 0票数 0

我有以下模式:

产品

代码语言:javascript
复制
  id: int pk ai
  title: string
  available: int
  left: int

代码语言:javascript
复制
  id: int pk ai
  status: int

OrderItem

代码语言:javascript
复制
  id: int pk ai
  order_id: int fk Order.id
  product_id: int fk Product.id
  amount: int

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

我需要更新所有产品的“左”字段。它应该通过对具有特定状态的订单(例如,order_items )的所有产品数量进行汇总来计算,并从Products表中的“可用”值中减去结果(也就是说,如果一个产品有10个可用,并且有一个完整的订单用amount=3列出了该产品,那么最终的left应该是7)。

理想情况下,我希望使用一个SQL查询来完成这个任务。

EN

回答 1

Stack Overflow用户

发布于 2013-05-13 16:21:17

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

代码语言:javascript
复制
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
                           )

这将根据您的需要更新产品表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16526445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档