Идентификатор из нескольких частей не может быть привязан к оператору с несколькими условиями where

#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 за пределами круглой скобки, и из-за этого он не нашел идентификатор, который находится внутри круглой скобки.