Rails - как извлечь определенные отсортированные данные из базы данных - PullRequest
1 голос
/ 07 октября 2010

У меня есть база данных с колонками (имя пользователя, баллы).Я звоню, чтобы вернуть некоторые поля из этой базы данных для использования в программе.Я хочу вытащить:

  1. Топ-10 пользователей с наибольшим количеством очков
  2. 5 пользователей выше / ниже имени пользователя, запрашивающего рейтинг

Я могуДостаточно легко вытащить верхнюю десятку ...

top_users = UserPoints.find(
  :all,
  :conditions => ['points > 0'],
  :order => "points DESC",
  :limit => 10)

С помощью команды find_by_username также легко получить определенную запись для запроса имени пользователя, но как я могу определить, где этот пользователь находится в рейтинге?Тогда как бы вы нашли 5 пользователей выше и 5 пользователей ниже определенного пользователя (при условии, что пользователь не входит в первую десятку)?

Спасибо!

-mark

1 Ответ

1 голос
/ 07 октября 2010

Может быть, сделать это с помощью двух запросов?

Пользователи выше текущего пользователя:
UserPoints.all(:conditions => ['points > ?', user.points], :limit => 5, :order => 'points asc')

Пользователи ниже текущего пользователя:
UserPoints.all(:conditions => ['points < ?', user.points], :limit => 5, :order => 'points desc')

Может быть, есть способ сделать это с помощью одного запроса, я не эксперт по SQL, но это должно решить это за вас.

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