我有一个左连接的小问题,我想要一个设计列表,并且在每个设计上我想显示每个设计有多少评论。
我正在使用 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 子句。但这很糟糕,因为它会选择尚未批准的设计和评论。
我错过了什么/做错了什么?