これがばかげた質問で申し訳ありませんが、最近 SQL をあまり使用しておらず、これについてもあまり役に立ちません。
結果が 0 または null の場合でも、結果に表示されるすべての行を取得する必要があります。私が抱えている問題は、WHERE句が原因です(WHERE行がないと、行はすべて表示されますが、データは表示されません)。
SELECT SUM(c.amount) AS 'total_income', p.ref_id AS 'property'
FROM property p
LEFT JOIN contract c
ON p.id = c.property_ref_id
LEFT JOIN contract_payment cp
ON c.id = cp.contract_id
WHERE cp.paid = 1 AND year(cp.date_paid) = :year
GROUP BY p.id
Where と Bad Data なしで結果セットを表示すると、次のようになります。
array
0 =>
array
'total_income' => null
'property' => string 'test/0001' (length=9)
1 =>
array
'total_income' => null
'property' => string 'test/0002' (length=9)
2 =>
array
'total_income' => string '200' (length=3)
'property' => string 'test/0003' (length=9)
3 =>
array
'total_income' => string '16100' (length=5)
'property' => string 'test/0004' (length=9)
これは WHERE 句と適切なデータを含む結果セットですが、すべての行ではありません
array
0 =>
array
'total_income' => string '4200' (length=4)
'property' => string 'test/0004' (length=9)
目的のデータを取得するために、SQL にどのような変更を加えることができるか教えてください。