我有两个具有一对多关系的表(orders、order_lines)。对于订单中附加的每个产品,orders 表将包含一行,order_lines 表将包含一行。
订单
+----------+-------------+---------------+
|order_num | total_order | shipping_total|
+----------+-------------+---------------+
| 12345 | 75.00 | 15.00 |
+----------+-------------+---------------+
ORDER_LINES
+----------+-------------+-------+
| order_num| volume | price |
+----------+-------------+-------+
| 12345 |10 |25.00 |
+----------+-------------+-------+
| 12345 |20 |25.00 |
+----------+-------------+-------+
| 12345 |20 |25.00 |
+----------+-------------+-------+
我想对 ORDERS 表中的 Total_order 和 Shipping_total 列以及 ORDER_LINES 表中的数量和价格列进行求和。
查询当前不起作用:
SELECT b_orders.bill_country, b_orders.ship_country
, SUM(volume) AS v, SUM(price) AS pt
, SUM(shipping_total) AS st, SUM(total_order) AS tot_o
FROM b_orders
JOIN b_order_lines
ON b_orders.order_num = b_order_lines.order_num
WHERE DATE(b_orders.order_date) BETWEEN '2012-04-02' AND '2012-04-06'
AND ship_country = 'USA'
AND b_order_lines.price > 0;
此查询返回错误值。我有点知道为什么,但不知道如何编写正确的查询...请帮助。
最佳答案
当您使用聚合函数行 SUM
,您需要告诉 SQL Server 哪些列将用于 GROUP BY
用于计算总和。
因此,如果您将以下内容添加到查询底部:
GROUP BY
b_orders.bill_country, b_orders.ship_country
这将告诉它为您提供 bill_country, ship_country
的每个独特组合的总和。在数据中。这是您要找的吗?
关于php - MYSQL 查询对不同表中的多列求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10048946/