Получение рейтинга игрока из базы данных - PullRequest
1 голос
/ 21 февраля 2011

У меня есть частный сервер RuneScape, который хранит результаты игрока в базе данных. Рекорды загружают результаты игрока и складывают их в таблицу.

Но теперь самое сложное, что я не могу исправить:
Я хочу отобразить звание игрока. Как: «Уровень атаки: 44, рейтинг 12». Таким образом, он должен найти ранг, который имеет пользователь.

Как мне заставить это работать? Я гуглил уже 2 дня, ничего не нашел.

Ответы [ 2 ]

2 голосов
/ 21 февраля 2011

Я не знаю, есть ли способ добиться этого, используя тот же запрос.

Вы можете сделать еще один запрос, например:

pos = select count(*) from players where attack > 44 + 1

Этот запрос вернул бы количество игроков, ранжированных выше кого-либо. Часть «плюс один» состоит в том, чтобы ранг начинался с 1 (потому что у первого не будет никого выше него).

Например, если таблица:

id attack
 0     35
 1     22
 2    121
 3     76

pos (3) = 1 (только игрок 2 ранжируется выше) + 1 = 2

0 голосов
/ 21 февраля 2011

Вы можете создать вид (вероятно), который показывает счет каждого игрока.Что-то в этом духе может сработать.

create view player_scores as 
select player_id, sum(score) 
from scores
group by player_id

Это даст вам по одной строке на игрока с их общим счетом.Имея это представление, ранг прост.

select count(*) 
from player_scores
where sum > (select sum from player_scores where player_id = 1)

Этот запрос вернет количество игроков с более высоким счетом, чем player_id = 1.

Конечно, если вы знаете счет вашего игрокаперед выполнением запроса вы можете передать этот показатель в качестве параметра.Это будет выполняться намного быстрее, пока столбец проиндексирован.

...