2

私は2つのテーブル、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でなくても、レコードは1つだけで、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値で合体します。

返された行の個々のエンティティを合計できるように、groupbyステートメントを追加しました。

コメント、製品言語からすべてを選択するよりも具体的にしたい場合があります。これは、グループ化されている不要な列を取り除くのに役立ちます

于 2013-03-12T19:17:22.753 に答える