Предполагая, что ровно одна user_groups
запись имеет groupkey = 'users'
(поскольку в противном случае ваш запрос недействителен), ваш запрос эквивалентен следующему:
SELECT u.*,
ug1.*
FROM users u
LEFT
JOIN user_groups ug1
ON u.usergroupid = ug1.groupid
LEFT
JOIN user_groups ug2
ON ug2.groupkey = 'users' -- not a real join condition
WHERE u.userstatus = 1
AND ug1.groupstatus = 1
AND ug1.grouprank >= ug2.grouprank
;
Но обратите внимание, что LEFT JOIN
s фактически заканчиваютсяработать как INNER JOIN
s, так как ваше предложение WHERE
зависит от того, какие соединения были успешными.Так что вы, вероятно, действительно хотите что-то вроде этого:
SELECT u.*,
ug1.*
FROM users u
LEFT
JOIN user_groups ug1
ON u.usergroupid = ug1.groupid
AND ug1.groupstatus = 1
LEFT
JOIN user_groups ug2
ON ug2.groupkey = 'users'
AND ug1.grouprank >= ug2.grouprank
WHERE u.userstatus = 1
;