у меня есть 2 запроса, собирать данные из разных таблиц, оба рекурсивные, но тесно связанные.
Оба хорошо работают:
Первые тянет дочерние компании:
with
relations as
(
select orgid as children,org_immediate_parent_orgid as orgid,'Sub' as relation
from oa.organizations
)
select distinct relation, level, orgid, children
from relations
where children is not null
start with orgid in (identifier)
connect by
nocycle prior children = orgid
order by 2,3,4
Вторые филиалы:
with
relations as
(
select affiliated_orgid as children, orgid as orgid,'Aff' as relation
from oa.org_affiliations
)
select distinct relation, level, orgid, children
from relations
where children is not null
start with orgid in (identifier)
connect by
nocycle prior children = orgid
order by 2,3,4
Рекурсия идет хорошо в обоих случаях, как я и ожидал. Да, в запросах обмениваются дети и orgid, я бы сказал, что дочерние компании - это «обратная зависимость» аффилированности (по крайней мере, в концепции), но результаты, как и ожидалось,
Я хочу запустить все вместе. Теперь я хочу, чтобы результаты первого цикла (для sub и aff) входили в следующий цикл (для subs и aff), пока дочерние элементы не будут нулевыми. Поэтому, если я получаю по одному результату от каждого, я хочу использовать оба идентификатора в качестве входных данных для каждого запроса.
Я знаю, что внутри "С помощью" я не могу сделать следующее.
select orgid as children,org_immediate_parent_orgid as orgid,'Sub' as relation
from oa.organizations
UNION ALL
select affiliated_orgid as children, orgid as orgid,'Aff' as relation
from oa.org_affiliations
Какие у меня альтернативы, решения?