mysql SUM 查询没有给出预期的结果

标签 mysql

我有两个表, payment_method 和 product_language 。 product_language 表有包含可用房间总数的 Total_Room 列,payment_method 表有包含预订房间的 Room_Booked 列。

当我们获取 product_language 数据时,我想要来自 payment_method 的 Room_Booked 总和。如果 room_booked 为空,则 sum=0 。

这是我尝试的查询,但即使 Room_Booked 不是 0,它也只给出一条记录和 sum=0。

感谢您的帮助。

SELECT Coalesce(Sum(payment_method.`room_booked`), 0), 
       `product_language`.*, 
       `payment_language`.* AS sum 
FROM   (`product_language` 
        LEFT JOIN payment_method 
               ON ( payment_method.`product_id` = product_language.`id` )) 

最佳答案

SELECT `product_language`.*, `payment_language`.* , sum(coalesce(payment_method.`room_booked`), 0) as sum, 
FROM   (`product_language` 
        LEFT JOIN payment_method 
               ON ( payment_method.`product_id` = product_language.`id` )) 
group by `product_language`.*, `payment_language`.*;

我相信您的 select 语句的顺序会影响您的结果。所以我把非聚合列放在你的聚合前面。这是一个很好的起点...

我还将 coalesce 切换到 sum,这样它就不会对 sum 进行 coalesce,如果 null 则对 room_booked 值进行 coalesce。

我添加了一个 group by 语句,以便您对返回行的各个实体进行汇总。

评论,可能需要比从产品语言中选择所有内容更具体,这将有助于清除任何不必要的分组列

关于mysql SUM 查询没有给出预期的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15369947/

相关文章:

php - 你如何使用 "$this->db->"

mysql - 使用 MySQL 的 UTC 到 America/New_York 时区

php - 使用 PHP 对 MySQL 表中特定字段的总值进行求和,并以数组形式提取整行

mysql - 在 mysql 中执行按位异或 + bit_count 时遇到问题

php - 如何使用 php pdo 进行全文搜索?

MySQL/MariaDB - 查询通过引用表在表中搜索

MySQL 查询获取随机行但考虑分数

c# - 组合框值加载问题

MySQL在cmd中没有连接

如果第二个 if-else 语句失败,MySQL 存储过程在第一个 If-else 语句上回滚