#mysql #subquery
#mysql #подзапрос
Вопрос:
Я пытаюсь добавить дополнительное условие WHERE с И к моему запросу MySQL, но продолжаю получать сообщение об ошибке Не удалось привязать многосоставный идентификатор userR.externalSource У меня есть настройка псевдонима в моем левом соединении из моей другой таблицы, но я все равно получаю эту ошибку. Может ли кто-нибудь объяснить мне, почему это происходит. Я нашел статью, но, похоже, это не так. Я думаю, что это скорее проблема форматирования моего запроса.
Этот запрос просто учитывает 2 разные группы пользователей, но у них не может быть пустого (НУЛЕВОГО) поля для поля externalSource из dbo.Таблица AAA_users.
SELECT SUM(A.ROLECOUNT) AS 'Advanced Users' ,
(SELECT SUM(A.ROLECOUNT)
FROM (
SELECT role.logicalName AS Role_name ,
COUNT(DISTINCT users.userId) AS RoleCount
FROM dbo.AAA_UserRoleResource AS users
LEFT JOIN dbo.AAA_Role AS role ON role.roleId = users.roleId
LEFT JOIN dbo.AAA_User AS userR ON userR.userId = users.userId
GROUP BY role.logicalName
) A
WHERE A.Role_name IN ('ROLE_VIEWER', 'ROLE_USER')
AND userR.externalSource is not NULL <-- issue here
) AS 'Basic user'
FROM(
SELECT role.logicalName AS Role_name ,
COUNT(DISTINCT users.userId) AS RoleCount
FROM dbo.AAA_UserRoleResource AS users
LEFT JOIN dbo.AAA_Role AS role ON role.roleId = users.roleId
LEFT JOIN dbo.AAA_User AS userR ON userR.userId = users.userId
GROUP BY role.logicalName
) A
WHERE A.Role_name IN ('ROLE_ADMIN');
Любая помощь приветствуется.
Ответ №1:
Итак, я понял, почему это не работает.
Я добавлял дополнительное условие WHERE за пределами круглой скобки, и из-за этого он не нашел идентификатор, который находится внутри круглой скобки.