2

我有两张表, 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` )) 
4

1 回答 1

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 语句的顺序会影响您的结果。所以我把非聚合列放在你的聚合前面。这是一个很好的起点……

我还将合并转换为总和,这样它就不会在总和上进行合并,并且如果为 null 则在 room_booked 值上合并。

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

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

于 2013-03-12T19:17:22.753 回答