您需要将
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_IMGFROM `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_IDORDER BY c.USER_ID, l.ID
示例: 如果您具有以下示例数据:
PLD_link:
ID STATUS TITLE
1 1 title1
2 2 title2PLD_USER:
ID NAME
8 Mahmoud
9 AhmedPLD_COMMENT:
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
情况1:用户Mahmoud
显示两次:
然后,上一个查询将为您提供每个用户和每个项目的评论计数,如下所示:
total_commments_user ID ITEM_ID USER_ID Name 3 4 1 8 Mahmoud 2 7 2 8 Mahmoud 2 9 1 9 Ahmed
请注意,由于用户Mahmoud
具有不同的,因此该用户以不同的计数显示了两次Item_Id
。
情况2:用户Mahmoud
只被打了一次:
如果要获取所有项目的每个用户的评论数,则只需要按进行分组
USER_ID,那么您将获得:
total_commments_user ID ITEM_ID USER_ID Name5 4 1 8 Mahmoud 3 9 1 9 Ahmed
正如您现在所看到的,因为我们使该用户Mahmoud
无效,所以该用户仅显示一次Item_Id
。
然后,您可以按状态或其他条件进行过滤。



