我有一個左一個小問題,加入我想要設計的列表,並在每個設計我要顯示的每個設計多少意見都有。計數JOIN和WHERE
我用的是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條評論,但我有表,其中第二設計沒有兩個設計發表評論。
如果我改變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子句。但這很糟糕,因爲它會選擇尚未批准的設計和評論。
什麼我想念/做錯了什麼?
'MySQL',我相信? – Quassnoi