Как получить рейтинг пользователей в зависимости от очков репутации.
Исключить роли 'super_admin' и 'персонала'.
МОЙ ЗАПРОС:
Когда я делаю запрос, включая всеДля пользователей ранжирование работает, как хотелось бы, но когда я делаю запрос, исключая пользователей с ролями 'super_admin' и 'staff', рейтинг ошибочен.
SELECT u.id, u.rank
FROM (
SELECT u.id, @rownum := @rownum +1 AS rank
FROM users u, (SELECT @rownum :=0 ) r
ORDER BY u.reputation DESC, u.register_date ASC
) AS u
LEFT JOIN users_role ur ON ur.user_id = u.id
LEFT JOIN roles r ON r.id = ur.role_id
WHERE r.key_role NOT IN ('super_admin','staff')
AND u.id=3
ТАБЛИЦЫ:
users table
ID REPUTATION REGISTERED_DATE
1 6000 2018-05-20 14:15:10
2 20 2018-05-22 14:15:10
3 2000 2018-05-25 14:15:10
4 350 2018-05-27 14:15:10
5 14 2018-05-27 19:15:10
6 0 2018-05-28 14:15:10
7 584 2018-05-29 14:15:10
8 54 2018-05-30 14:15:10
users_roles table
ID USER_ID ROLE_ID
1 1 1
2 2 2
3 3 3
4 4 3
5 5 3
6 6 3
7 7 3
8 8 3
roles table
ID NAME KEY_ROLE
1 Super Admin super_admin
2 Staff staff
3 Registered user registered_user