2017-05-16 16 views
0

日付の期間内にすべての予約を取得し、支払いテーブルに参加して合計支払い額を計算するクエリを作成しようとしています。 。お支払いがない予約を外している以外は、クエリは正常に機能しているようです。どんな助けでも大歓迎です。COALESCE(SUM()、0)GROUP BYのJOINEDテーブルの列にすべての結果が表示されない

SELECT 
    reservations.reservation_id , 
    properties. NAME , 
    properties.address1 AS prop_address , 
    reservations.last_name , 
    reservations.arrival_date , 
    reservations.departure_date , 
    reservations.date_created , 
    reservations.contract_filename , 
    reservations.contract_signed , 
    reservation_payments.date_of_payment , 
    (
     SUM(
      reservations.cleaning_fee + reservations.processing_fee + reservations.pool_heat_fee + reservations.special_fees + reservations.hoa_fees + reservations.rental_fee + reservations.taxes 
     ) - COALESCE(
      SUM(
       reservation_payments.amount_paid 
      ) , 
      0 
     ) 
    ) AS sub_total , 
    COALESCE(
     SUM(
      reservation_payments.amount_paid 
     ) , 
     0 
    ) AS total_paid_to_date , 
    reservations.balance_due_date , 
    (
     SELECT 
      GROUP_CONCAT(
       DISTINCT user_meta.first_name 
       ORDER BY 
        associated_sales_staff.display_order ASC SEPARATOR ", " 
      ) 
     FROM 
      associated_sales_staff 
     JOIN user_meta ON user_meta.user_id = associated_sales_staff.user_id 
     WHERE 
      (
       associated_sales_staff.reservation_id = reservations.reservation_id 
      ) 
    ) AS sales_agents 
FROM 
    reservations 
JOIN properties ON properties.prop_id = reservations.property_id 
JOIN reservation_payments ON reservation_payments.reservation_id = reservations.reservation_id 
WHERE 
    properties.active_for_cleaning_schedule = 1 
AND reservations.arrival_date >= "2017-05-15" 
AND reservations.departure_date <= "2017-05-30" 
GROUP BY 
    reservations.reservation_id 
HAVING 
    (sub_total >= 1) 
ORDER BY 
    total_paid_to_date ASC 
+0

'HAVING(sub_total ON reservation_paymentsを登録しよう

私はから更新します> = 1) 'のように思われる。 – Sammitch

+0

HAVING(sub_total> = 1)が正しく動作しているようです。私はそれを削除すると、私はちょうど0のsub_totalを含むより多くの結果を取得します。私はtotal_paid_to_date = 0を含む結果を取得しようとしています。 –

答えて

0

私は問題がreservation_paymentsテーブルのJOINであることがわかりました。

がreservation_payments.reservation_id = reservations.reservation_id

へreservation_payments登録しよう:

LEFTをreservations.reservation_id = reservation_payments.reservation_id

関連する問題