Правое внешнее соединение двух таблиц, в которых предложение ON имеет подзапрос
Я пытаюсь выполнить правильное внешнее соединение на двух таблицах liferay - users_
а также expandovalue
- чтобы получить набор результатов.
Когда я сделал следующий запрос для всех пользователей, я получил желаемый результат.
SELECT USER_.FIRSTNAME
, USER_.LASTNAME
, USER_.EMAILADDRESS
, USER_.JOBTITLE
, expandovalue.data_
from expandovalue
right outer join
user_ on expandovalue.classpk = user_.userid
and expandovalue.columnid =35695;
При попытке сделать то же самое для группы пользователей (часть группы пользователей) произошла ошибка. Запрос ниже:
SELECT USER_.FIRSTNAME
, USER_.LASTNAME
, USER_.EMAILADDRESS
, USER_.JOBTITLE
, expandovalue.data_
from expandovalue
right outer join
user_ on expandovalue.classpk
in (select userid
from user_
where userid
in ( select userid
from users_usergroups
where usergroupid = 40073
) and status =0) = user_.userid in
(select userid
from user_
where userid
in ( select userid
from users_usergroups
where usergroupid = 40073
)
and status =0
) and expandovalue.columnid =35695
Вот подзапрос, который дает userid
людей в определенной группе пользователей.
(select userid
from user_
where userid in
( select userid
from users_usergroups
where usergroupid = 40073)
and status =0
)
Я иду в совершенно неправильном направлении? Пожалуйста, порекомендуйте.
1 ответ
Попробуйте этот запрос:
SELECT USER_.FIRSTNAME,
USER_.LASTNAME,
USER_.EMAILADDRESS,
USER_.JOBTITLE,
expandovalue.data_
from expandovalue
right outer join user_
on expandovalue.classpk IN
(select userid
from user_
where userid in (select userid
from users_usergroups
where usergroupid = 40073) and
status = 0) AND
user_.userid in (select userid
from user_
where userid in (select userid
from users_usergroups
where usergroupid = 40073) AND
status =0) AND
expandovalue.columnid = 35695
После конца первого подзапроса пропущено "И".