您需要将SELECT
子句中除之外的所有列添加c.USER_ID
到GROUP BY
子句中,如下所示:
group by c.ID, c.otherfields, l.title,..
我认为以下将正常工作:
SELECT count(c.USER_ID) as total_commments_user ,
c.*, u.NAME, l.TITLE as LINK_TITLE, u.AUTH_IMG
FROM `PLD_COMMENT` c
left outer join `PLD_USER` u ON (u.ID = c.USER_ID)
left outer join `PLD_LINK` l ON (l.ID = c.ITEM_ID)
group by c.ITEM_ID, c.USER_ID
ORDER BY c.USER_ID, l.ID
如果您具有以下示例数据:
ID STATUS TITLE
1 1 title1 2 2 title2
ID NAME
8 Mahmoud 9 Ahmed
ID ITEM_ID USER_ID STATUS
4 1 8 1 5 1 8 1 6 1 8 1 7 2 8 2 8 2 8 2 9 1 9 1 10 1 9 1
然后,上一个查询将为您提供每个用户和每个项目的评论计数,如下所示:
total_commments_user ID ITEM_ID USER_ID Name
3 4 1 8 Mahmoud
2 7 2 8 Mahmoud
2 9 1 9 Ahmed
。
如果要获取所有项目的每个用户的评论数,则只需要按进行分组USER_ID
,那么您将获得:
total_commments_user ID ITEM_ID USER_ID Name
5 4 1 8 Mahmoud
3 9 1 9 Ahmed
。
然后,您可以按状态或其他条件进行过滤。