我有两个表,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` ))
答案 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语句,以便您总结返回行的各个实体。
评论,可能比从产品语言中选择所有内容更具体,这将有助于清除它所分组的任何不必要的列