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

时间:2013-03-12 19:04:56

标签: mysql

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

当我们获得product_language数据时,我想要来自payment_method的Room_Booked的总和。如果room_booked为null,则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` )) 

1 个答案:

答案 0 :(得分:0)

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上进行合并,如果为null,它会在room_booked值上合并。

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

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