Фильтрация с нумерацией страниц - PullRequest
2 голосов
/ 22 ноября 2011

Я заранее прошу прощения, если это объяснение не является на 100% ясным.

Я пытаюсь составить список пользователей в порядке их рейтингов (а затем упорядочить по их идентификаторам пользователей).Я на самом деле пытаюсь разбить на страницы результаты, потому что потенциально может быть большое количество результатов.

У меня есть две таблицы:

  • Таблица A: со столбцом "userid"
  • Таблица B: со столбцами «rating» и «userid» и «groupid»

Существуют и другие столбцы, но они являются соответствующими здесь.

Каждый пользователь может представить рейтинг группы, используя следующие значения: -1, 0 или 1, который записан в «рейтинге».Чистый рейтинг каждой группы оценивается путем получения суммарного суммирования рейтингов «статуса», которые соответствуют данной группе.

У меня есть этот базовый запрос:

SELECT groupid, userid, SUM(rating) 
FROM A LEFT JOIN B ON A.userid = B.userid 
GROUP BY A.userid 
ORDER BY SUM(rating) DESC, A.userid ASC 

Однако я хотел бы разбить на страницы, поэтому мне нужно иметь возможность выбирать результаты на основе последнего идентификатора пользователя, который был ранее отображен.

Как правило, было бы легко отфильтровать результаты на основе любых результатов, у которых идентификатор пользователя больше, чем отображаемый последний идентификатор пользователя.Однако, так как я упорядочиваю результаты на основе SUM (рейтинг), на самом деле нет системы последовательного упорядочения.

Есть ли хороший способ отфильтровать мои результаты для целей нумерации страниц, даже если мои ID пользователей в результатах не упорядочены последовательно?

1 Ответ

0 голосов
/ 22 ноября 2011

Вы пытались использовать лимит со смещением?

http://php.about.com/od/mysqlcommands/g/Limit_sql.htm

...