他在那里,
我发现了很多像这样的问题,但我似乎无法解决这个问题。所以我会问它并希望有人可以帮助我解决这个具体问题(或者如果它是重复的话,请指导我这个问题)。
我的数据库中有以下三个表:
tbl_achievements
id | points
tbl_achievements_finished
id | user_id | achievement_id
tbl_users
id
我想做的是选择特定用户或用户列表并查看职位/职级。这个想法是用户完成的所有成就,产生积分。完美的结果将是:
rank | user_id | achievement_points
1 | 6 | 65
2 | 3 | 45
3 | 2 | 15
我似乎无法绕过它。我希望有人可以帮助我(一个想法)查询。
非常感谢!如果有任何不清楚的地方,请告诉我。 :)
答案 0 :(得分:0)
这样的事情应该这样做:
SELECT af.user_id, SUM(points) as 'achievement_points'
FROM tbl_users as u
LEFT JOIN tbl_achievements_finished AS af ON u.id = af.user_id
LEFT JOIN tbl_achievements AS a ON a.id = af.achievement_id
GROUP BY u.id
ORDER BY SUM(points) DESC
这是上述查询的示例输出:
| user_id | achievement_points |
|---------|--------------------|
| 3 | 40 |
| 1 | 25 |
| 2 | 15 |
请在此处查看:http://sqlfiddle.com/#!9/69775/9/0
由于订购原因,我没有设法保持排名,但在处理查询时,您始终可以使用排名。