Можете ли вы помочь переписать это в соединениях?
select * from users where users.advised_by in (
select p.id
from advisors p
join advisor_members m on p.id = m.advisor_id
join representatives r on m.user_id=r.user_id
where m.memeber_type='Advisor'
)
Это часть запроса на 200+ строк, и оператор in () трудно поддерживать, когда есть изменения.


вы должны использовать правильное предложение
select *
from users
inner join
(
select p.id
from advisors p
join advisor_members m on p.id = m.advisor_id
join representatives r on m.user_id=r.user_id
where m.memeber_type='Advisor'
) t on users.advised_by = t.id
/*Опция 1 */
ВЫБРАТЬ * ОТ пользователей usr ВНУТРЕННЕЕ СОЕДИНЕНИЕ ( ВЫБЕРИТЕ p.id AS Advisor_id ОТ консультантов p ПРИСОЕДИНЯЙТЕСЬ ВКЛ p.id = m.advisor_id ПРИСОЕДИНЯЙТЕСЬ к представителям r ВКЛ m.user_id = r.user_id ГДЕ m.memeber_type = 'Advisor') T2 usr.advised_by = t2.advisor_id
/ * Вариант 2 - * / ВЫБРАТЬ * ОТ пользователей usr Советники INNER JOIN p НА usr.advised_by = p.id ПРИСОЕДИНИТЬСЯ ( ВЫБРАТЬ * ОТ Advisor_members ГДЕ m.memeber_type = 'Advisor') m ВКЛ p.id = m.advisor_id ПРИСОЕДИНЯЙТЕСЬ к представителям r ВКЛ m.user_id = r.user_id