У меня есть две таблицы, как показано ниже
radcheck
+----+-------------------+--------------------+----+--------+
| id | username | attribute | op | value |
+----+-------------------+--------------------+----+--------+
| 1 | userA | Cleartext-Password | := | Apass |
| 2 | userB | Cleartext-Password | := | Bpass |
| 3 | DC:9F:DB:xx:xx:xx | Auth-Type | := | Accept |
| 4 | userC | Cleartext-Password | := | Cpass |
+----+-------------------+--------------------+----+--------+
radusergroup
+----------+------------+----------+
| username | groupname | priority |
+----------+------------+----------+
| userA | daily-plan | 1 |
| userA | disabled | 0 |
| userB | quota-plan | 1 |
| userC | disabled | 0 |
| userC | try | 1 |
+----------+------------+----------+
Я использую приведенный ниже запрос для возврата результатов, в которых перечислены имена пользователей, которые не являются частью отключенной группы, но я хотел бы вернуть другой столбец в результатах, называемый отключенным, со значением 1, если он является частью отключенной группы, и 0, если нет:
SELECT c.id, c.username, c.value, g.groupname
FROM radcheck c LEFT JOIN
radusergroup g
USING (username)
WHERE attribute = 'Cleartext-Password' AND
groupname <> 'disabled';
Я попробовал несколько способов, используя тройные левые объединения, используя запрос ниже, но они не работают, столбец имени группы в результате всегда имеет первое имя группы, найденное в таблице radusergroup:
SELECT c.id, c.username, c.value, g.groupname, (disabled.username IS NOT NULL) AS disabled
FROM radcheck c LEFT JOIN
radusergroup g
ON c.username = g.username LEFT JOIN
radusergroup disabled
ON disabled.username = c.username AND
disabled.groupname = 'disabled'
WHERE (c.username = g.username) AND
attribute = 'Cleartext-Password'
GROUP BY c.username;
вышеуказанные выходы:
+----+----------+-------+------------+----------+
| id | username | value | groupname | disabled |
+----+----------+-------+------------+----------+
| 1 | userA | Apass | daily-plan | 1 |
| 2 | userB | Bpass | quota-plan | 0 |
| 4 | userC | Cpass | disabled | 1 |
+----+----------+-------+------------+----------+