通过另一个表中的值来汇总sql组

时间:2014-02-19 13:39:41

标签: mysql sql sql-server

我有两张桌子:在线订单,在线订单详情 我有一个关于如何根据详细订单表计算在线订单表中订单总金额的问题。

详细信息表如下所示:

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命令吗?

2 个答案:

答案 0 :(得分:1)

目前尚不清楚您使用的数据库系统。 如果你想更新orders.total_amount 此更新语句将在任何DB下工作:

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

答案 1 :(得分:0)

这是你想要的吗?

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