获取订单的总价格

时间:2018-11-19 15:30:39

标签: mysql

我需要计算订单的总价格。

我正在使用此设置:

订单

order_id
--------
1
2
3

选择列表

picklist_id order_id
----------- --------
1           1
2           1
3           2
4           3

产品

product_id picklist_id name           price amount
---------- ----------- -------------- ----- ------
1          1           product A      100   1
2          1           product B      200   3
3          2           product C      300   2
4          3           product A      100   2
5          4           Product C      300   1

我的问题是,如何计算订单的总价

因此,理想情况下,我的结果将是这样的:

order_id total_price
-------- -----------
1        1200
2        200
3        300

编辑

到目前为止查询:

SELECT
order_picklists.name,
FORMAT(SUM(price * amount), 2) AS total
FROM order_products
JOIN order_picklists ON order_picklists.id = order_products.picklist_id
GROUP BY order_picklists.name

但是,这只会在每个选择列表中添加所有内容,但我需要将这些内容组合在一起用于订单。

1 个答案:

答案 0 :(得分:1)

您应该GROUP BY order_id,每个订单仅返回1行。

SELECT o.order_id, SUM(p.price * p.amount) AS total
FROM orders o
LEFT JOIN picklists pl ON pl.order_id = o.order_id
LEFT JOIN products p ON pl.picklist_id = p.picklist_id
GROUP BY o.order_id;