我想要的是:
对于连接到 Group_ID=1 的每个用户,我想计算该用户参加的活动数量,并使用该信息按参加次数最多的用户订购 DESC(结束)。
将用户连接到组的表:
user_r_group:
ID User_ID Group_ID
1 1 1
2 3 1
3 2 1
4 1 2 <-- User 1 connected to another group
显示用户参加了哪些活动的表格:
activities_attended:
ID Activity_ID User_ID
1 1 1 <-- User 1 have attended 3 activities
2 1 3
3 1 2
4 2 1 <-- User 1 have attended 3 activities
5 2 3
6 3 1 <-- User 1 have attended 3 activities
我正在寻找的结果:
User_ID Attendings
1 3
3 2
2 1
有没有办法编写一个 mysql_query 来实现这一点?
确实是这样的感觉。还是我需要用带有查询组合的 php 循环来迷惑自己?
我已经检查了加入表格的方法,并且我对ORDER BY稍微熟悉,但我不知道如何存储每个用户的出席信息,然后按它排序,然后将它们放在一起根据需要查询;/请帮忙?
解决了!
感谢GordonM提供有关查看位置的指导,感谢 Milen Pavlov和Kirill Fuchs提供代码示例。我将这些代码组合成我自己喜欢的版本。然而,基里尔的代码是准确的,但他最后忘记了“ORDER BY Attendings DESC”;)
SELECT
COUNT(aa.User_ID) as Attendings,
urg.User_ID
FROM
activities_attended aa
INNER JOIN user_r_group urg ON urg.User_ID=aa.User_ID
WHERE
urg.Group_ID=1
GROUP BY
urg.User_ID
ORDER BY
Attendings DESC