Я пытаюсь написать запрос, который возвращает идентификаторы пользователей из 10 лучших пользователей, набравших наибольшее количество очков за последние 7 дней в моем веб-приложении.
У меня есть три таблицы, которые вместе содержат необходимую мне информацию.
votingapi_votes
Таблица. У него есть запись для каждого «за» / «против» комментария или узла.
node
Таблица. Он может связать идентификатор узла с идентификатором пользователя, чтобы вы могли выяснить, кто опубликовал статью, получив голоса.
comments
таблица, которая делает то же самое для комментариев.
Мне кажется, мне нужно написать запрос, который выбирает каждый голос по комментарию или узлу за последнюю неделю из таблицы голосованияapi_vote.
Вот структура этой таблицы:
- vote_id
- content_type
- content_id
- значение
- value_type
- бирка
- UID
- 1035 * Отметка времени *
Таким образом, я бы ВЫБИРАЛ строки content_type "node" или "comment" с отметкой времени Unix, превышающей time () - 684000.
Тогда нужно
сгруппируйте эти голоса по "content_id".
Найдите соответствующие значения "user_id" для каждого content_id в таблицах "node" и "comments", чтобы мы знали, кто создал эти узлы и комментарии.
Подсчитайте, сколько очков набрал каждый user_id, полученный от его узлов и комментариев.
Сортировать эти user_id в обратном порядке и ограничить их отображением только первых 10.
Уф. Это похоже на то, что мне нужно сделать. Теперь, как выглядит этот фактический запрос?