php - MYSQL 查询对不同表中的多列求和

标签 php mysql join where-clause

我有两个具有一对多关系的表(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/

相关文章:

php - SQL UNION 只返回第一个 SELECT 的结果

mysql - MYSQL多表匹配结果

Oracle 触发器从产品中删除库存数量并添加到订单行

c# - 使用私钥对 PHP 进行数字签名,在 C# 中进行验证

php - 特征继承检查 PHP

mysql - 使用单选语句在数据库中的所有表中搜索

html - 即使帐户已获得授权,也会出现 HTTP 错误 500

mysql - 如何在 Docker MySQL 实例上恢复 .sql.gz 转储?

php - 如何制作一个可以连接三个表并检测一个表是否没有我的项目的精美 mysql 连接

javascript - 从本地 html/javascript 网站插入 mySQL 数据库