Я не думаю, что это будет слишком сложно объяснить, но, конечно, сложно заставить его работать.
Прежде всего, у меня есть пара таблиц относительно комментариев пользователей, одна таблица для каждого раздела (форум, статьи и т. Д.), Как показано ниже:
site_users (id, username, …) [Таблица, в которой содержится информация пользователя]
site_articles_comments (id, user_id, comment, …) [Где user_id = site_users.id]
site_forum_comments (id, user_id, comment, …) [То же самое для site_articles_comments]
Дело в том, что каждая новая строка является новым комментарием, и пользователи могут комментировать несколько раз, а это значит, что добавляется больше строк, что позволяет сортировать количество строк, чтобы получить количество комментариев в какой-то системе ранжирования.
Я смог сделать простой ранг форума, выполнив этот простой запрос:
SELECT u.id, u.username, COUNT (r.id) AS rank FROM site_users AS u LEFT JOIN site_forum_comments AS r ON u.id = r.user_id GROUP BY u.username, u.id ORDER BY rank DESC LIMIT: l
Этот запрос сортирует всех пользователей из базы данных, где пользователь, который прокомментировал больше всего, всегда на высоте.
С другой стороны, мне нужна глобальная система ранжирования, которая суммирует количество комментариев в каждом разделе (статьи, форум и т. Д.) И отображает пользователей соответственно.
Я играл с sql, чтобы сделать это, и последнее, что я придумал, это огромный запрос:
SELECT u.id, u.username, (COUNT (a.id) + COUNT (f.id)) AS rank FROM site_users u LEFT JOIN site_articles_comments a ON a.user_id = u.id LEFT JOIN site_forum_comments f ON f.user_id = u.id GROUP BY u.username, u.id ORDER BY rank DESC LIMIT: l
Это, однако, возвращает null. Что я могу сделать, чтобы добиться результата, который я хочу?
Заранее спасибо,
Матеуш
EDIT1: Извините за недостаток информации, это касается MySQL.