我需要计算订单的总价格。
我正在使用此设置:
订单
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
但是,这只会在每个选择列表中添加所有内容,但我需要将这些内容组合在一起用于订单。
答案 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;