【问题标题】:sum sql group by values from another table根据另一个表中的值对 sql 组求和
【发布时间】:2014-02-19 21:56:57
【问题描述】:

我有 2 个表格:在线订单、在线订单详情 我有一个关于如何根据明细订单表计算在线订单表中订单总额的问题。

明细表如下:

id_order    Id_product  quantity    price   value
1                2         1           3      3
1                3         2           2      4
2                1         1           5      5

我想对 id_order 中的所有值求和,并将它们插入在线订单表中的订单总额中。

你能帮我处理一下 SQL 命令吗?

【问题讨论】:

  • 是哪一个? MySQL? SQL 服务器?普通 SQL?
  • 我猜你爱上了一个非常糟糕的中文副本。没有 MySQL Server 2005 这样的东西。您可以拥有 MySQL 或 SQL Server 2005。

标签: mysql sql sql-server


【解决方案1】:

不清楚您使用什么数据库系统。 如果你想更新orders.total_amount 此更新语句适用于任何数据库:

update orders 
  set total_amount = (
               select SUM(value)
                 from orders_details
                where id_order = orders.id
              )
   where EXISTS(select *
                 from orders_details
                where id_order = orders.id)

此更新语句适用于 MySQL:

update orders u
inner join (select id_order, SUM(value) as total
                     from orders_details
                    GROUP BY  id_order) s on
    u.id = s.id_order
set u.total_amoun = s.total

【讨论】:

    【解决方案2】:

    这是你想要的吗?

    SELECT o.id_order, SUM(quantity * price) AS total_price
    FROM online o
         INNER JOIN detail d
             ON d.id_order = o.id_order
    GROUP BY o.id_order
    

    【讨论】:

    • 应该是这样。谢谢!
    • @user3328253 我首先选择online 形式只是为了过滤行,但您也可以仅从detail 中选择并使用WHERE EXISTSWHERE id_order IN (...) 子句。
    猜你喜欢
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 2018-12-25
    • 2014-08-10
    • 2021-08-20
    • 2019-08-10
    • 2021-03-29
    相关资源
    最近更新 更多