【发布时间】:2014-03-28 13:06:06
【问题描述】:
我已经搜索了我的问题,但找不到任何真正为我解决问题的东西。
我想显示游戏的前 10 名个人记录。每辆车都有一个玩家在特定赛道上得分。
数据库表:
player = id, playername, username
score = id, track, car, bestscore, totalscore, player_id (foreign key to player.id)
我要做的是显示每条赛道的前 10 名得分(因此该赛道的最佳赛车得分最高)。它应该看起来像总分、赛道、赛车、排名。
在我的查询中,我应该能够对每个用户名进行这样的概述,因此我还必须加入表格。
到目前为止,我正在尝试这个:
SELECT player_id, totalscore, track, car,
@curRank := @curRank + 1 AS rank
FROM score s, (SELECT @curRank := 0) r
WHERE player_id = 1
ORDER BY totalscore DESC
LIMIT 10
这只是为了显示玩家 1 的最高分数,但这应该是“当然,其中 username = 'name'。我现在真的被这个卡住了。排名似乎无法正常工作。它应该显示用户在他所说的每条记录上的排名。
例子:
Track - car - totalscore (Best) - rank
track1 - car1 - 30 - 2 (one user has a higher score on track1)
track2 - car2 - 20 - 5 (four users have a higher score on track2)
track3 - car1 - 10 - 1 (this user has the highest score on track3)
我真的不知道如何解决这个问题。我希望我的解释是可以理解的!
提前致谢
编辑:
SELECT uo.track, uo.car, uo.totalscore, p.username,
(SELECT COUNT(DISTINCT ui.totalscore)
FROM score ui WHERE ui.totalscore>= uo.totalscore
AND ui.track = uo.track) AS rank
FROM score uo
JOIN player p
ON p.id = uo.player_id
WHERE p.username = 'Bose321'
GROUP BY uo.totalscore
ORDER BY totalscore DESC
我一直在尝试使用另一个代码,这似乎接近我想要的。唯一的问题是它显示了一条赛道上所有汽车的所有分数。我只想要那条赛道上的最高分,并展示使用过的汽车。
【问题讨论】:
-
考虑提供适当的 DDL(和/或 sqlfiddle)以及所需的结果集