カテゴリが関連付けられているアカウントと、注文が「order_type」フィールドに基づく債務またはクレジットのいずれかである注文テーブルと、支払い日と金額を格納する支払いテーブルがあります(債務またはクレジットに負の数は使用されません) 。
現在、私は次のようなものを使用しています。
SELECT cat, SUM(p.amount) balance
FROM accounts a
LEFT JOIN orders o ON a.id = o.account_id
LEFT JOIN payments p ON o.id = p.order_id
WHERE YEAR(p.date) = 2012
GROUP BY a.cat
最初の問題:
これはすべて支払い済みのお金としてカウントされますが、これは間違っています、私は使用しようとしました
sum(IF(o.order_type = 1, p.amount, p.amount * -1 ))
すべての金額がマイナスだったため、正しい結果が得られませんでした。
2番目の問題:
支払いが行われなかったカテゴリは表示されません。ここでの制限要因は、2012年のみの支払いをカウントしていることを確認する必要がある日付ですが、支払いが行われなかった場合はすべてのカテゴリをゼロで表示したいと思います。
私はそれに間違った方法で近づいていますか?
誰かが問題のいずれかまたは両方の解決策を知っている場合は、これに関する解決策を提供してください。