私はこのクエリで本当に苦労しています。私は4つのテーブル(http://oberto.co.nz/db-sql.png)を持っています:mySQLは複数のテーブルに結合します
Invoice_Payement、Invoice、Client and Calendar Invoice_Paymentの 'paid_amount'列を月/年ごとに合計してレポートを作成しようとしています。クエリはすべての月含む必要
- 、さらにそれらデータのない
- ありクエリは、条件(請求書テーブル)必要があります。私は以下のクエリと試みたregistered_id = [ID]
をこれはうまくいきますが、 'paid_date'には1か月間のレコードがない場合は短くなります。結果はその月が結果に表示されないことです
これを解決するためにカレンダーテーブルを追加しましたが、残しておく方法はわかりません。
SELECT
MONTHNAME(Invoice_Payments.date_paid) as month,
SUM(Invoice_Payments.paid_amount) AS total
FROM Invoice, Client, Invoice_Payments
WHERE Client.registered_id = 1
AND Client.id = Invoice.client_id
And Invoice.id = Invoice_Payments.invoice_id
AND date_paid IS NOT NULL
GROUP BY YEAR(Invoice_Payments.date_paid), MONTH(Invoice_Payments.date_paid)
私のシナリオの基本的なERD図については、上記のリンクをご覧ください。
データベース:http://oberto.co.nz/ 予想される出力:読書のため
month total
August 5
September 0
October 196
November 205
December 214
January 229
ありがとう:私の現在のクエリは、以下のようなものを返します。 私は前にこのQを投稿しましたが、私はそれを悪く言いました。
を作業することができますが、各月の合計のリストだけをしたいですか? WHERE句に "date_paid IS NOT NULL"が必要なのはなぜですか? Invoice_Paymentsテーブルに、実際にdate_paidがnullの支払いがありますか? – James