Позиция пользователя в таблице? - PullRequest
2 голосов
/ 25 февраля 2011

У меня есть игровое приложение, я отслеживаю количество выигранных игр на пользователя, что-то вроде:

// table: users
id | username | num_games_won

Как бы я сказал пользователю его общий рейтинг в терминах num_games_won? Например:

   id   | username | num_games_won
-----------------------------------
  723      john          203              
  724      mary          1924
  725      steve         391

Рейтинг будет: Мэри-> 0, Стив-> 1, Джон-> 2. Учитывая имя пользователя, как я могу найти их рейтинг? (Я использую mysql)

Спасибо

Ответы [ 2 ]

4 голосов
/ 25 февраля 2011

Попробуйте подсчитать, сколько пользователей выиграло больше игр, чем интересующий вас пользователь (по id или username)

SELECT COUNT(*) FROM users 
WHERE num_games_won > (SELECT num_games_won FROM users WHERE id = 723)
1 голос
/ 25 февраля 2011

В этом случае вы можете сделать простой ORDER BY.К сожалению, MySQL не поддерживает приятные аналитические функции, такие как RANK или ROWNUMBER, которые поддерживаются другими базами данных, потому что это были бы другие потенциальные решения, когда ответ не так прост, как ORDER BY.

(редактировать: вы можете сортировать чит и имитировать ROWNUMBER в MySQL благодаря этому ответу на SO)

В этом случае вы должны сделать SELECT * FROM users ORDER BY num_games_won DESC, и первая строка будетиметь больше всего, второй будет вторым больше всего и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...