デザインのリストが必要な左結合に少し問題があり、各デザインに各デザインのコメント数を表示したい.
LEFT JOIN を使用しています
SELECT ds.*, count(com.comment) AS countcom FROM tdic_designs ds
LEFT JOIN tdic_comments com ON (com.design_id = ds.id)
WHERE ds.approved = 1 AND ds.hidden = 0 AND com.approved = 1
GROUP BY ds.id
ORDER BY ds.date_added ASC
しかし、コメントが 1 つある 1 つのデザインしか表示されないため、これは機能しませんが、テーブルには 2 つのデザインがあり、2 つ目のデザインにはコメントがありません。
SQLを次のように変更すると
SELECT ds.*, count(com.comment) AS countcom FROM tdic_designs ds
LEFT JOIN tdic_comments com ON (com.design_id = ds.id)
GROUP BY ds.id, com.approved, ds.approved
ORDER BY ds.date_added ASC
つまり、WHERE 句を削除しています。しかし、承認されていないデザインとコメントの両方が選択されるため、これは悪いことです。
私が見逃している/間違っていることは何ですか?