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
例: 次のサンプルデータがある場合:
-
PLD_LINK:
ID STATUS TITLE 1 1 title1 2 2 title2
-
PLD_USER:
ID NAME 8 Mahmoud 9 Ahmed
-
PLD_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
2回表示されます:
次に、前のクエリで、次のように、各ユーザーと各アイテムのコメントの数がわかります。
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回表示されます。 。
ケース2:ユーザーMahmoud
一度だけ表示されます:
すべてのアイテムの各ユーザーのコメント数を取得する場合は、USER_ID
のみでグループ化する必要があります。 そしてあなたは得るでしょう:
total_commments_user ID ITEM_ID USER_ID Name
5 4 1 8 Mahmoud
3 9 1 9 Ahmed
ご覧のとおり、ユーザーMahmoud
Item_Id
を使用したため、表示されるのは1回だけです。 。
その後、ステータスなどでフィルタリングできます。