Я ищу обходной путь, который работает как parent-child, но без использования рекурсивного поиска. Я не могу использовать временные таблицы.
ЭТОТ СКРИПТ РАБОТАЕТ, но медленно, всегда работает в течение 600 с .:
SELECT CONNECT_BY_ROOT party_id as ANCESTOR,
party_id, role_id, subject_id
FROM onecrm.CRM_PARTY
WHERE LEVEL>1
and party_id = 'text'
CONNECT BY PRIOR Party_id=parent_id;
Это хорошо работает, но содержит 3 шага. Мне нужно использовать только один шаг из-за совокупности задач.
select internal_id, party_id, parent_id, subject_id, channel_type_id
from onecrm.O_ORDER oo
join onecrm.CRM_PARTY cp on oo.party_ref_no = cp.party_ref_no
where internal_id = 'O7VYECF';
Результат:
INTERNAL_ID, PARTY_ID, PARENT_ID, SUBJECT_ID, CHANNEL_TYPE_ID
O7VYECF 110179237 110179236 null CRM
select internal_id, cp.party_id, parent_id
from onecrm.O_ORDER oo
right join onecrm.CRM_PARTY cp on oo.party_ref_no = cp.party_ref_no
where cp.party_id = '110179236';
Результат:
INTERNAL_ID, PARTY_ID, PARENT_ID
OAMUAY7 110179236 null
select internal_id, cp.party_id, parent_id, cp.subject_id,
channel_type_id, full_name, phone_no_1, phone_no_2, email, segment
from onecrm.O_ORDER oo
right join onecrm.CRM_PARTY cp on oo.party_ref_no = cp.party_ref_no
left join onecrm.CRM_SUBJECT cs on cs.SUBJECT_ID = cp.SUBJECT_ID
left join onecrm.crm_contact_ref ccr on ccr.conre_ref_no = cs.subj_ref_no
left join onecrm.CRM_CONTACT_EXT cce on cce.contact_id = ccr.contact_id
where cp.party_id = '110179236';
Ожидаемый результат:
INTERNAL_ID, PARTY_ID, PARENT_ID, SUBJECT_ID, CHANNEL_TYPE_ID, FULL_NAME, PHONE_NO_1, PHONE_NO_2, EMAIL, SEGMENT
OAMUAY7 110179236 null 102219217 TGB great_company s.r.o.
xxx xxx TNC RNC
Ожидаемый результат - только запись internal_id
и получение parent_id
INFO