powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Помогите с запросом, обратном иерархическому
5 сообщений из 5, страница 1 из 1
Помогите с запросом, обратном иерархическому
    #36431995
kasyanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из данных вида (вложенность не ограничена)

Код: plaintext
1.
2.
3.
4.
5.
with t(c) as (values 
('UNIT1/UNIT2/UNIT3')
) 
select 
* 
from t;

Нужно получить

PARENT CHILDnull UNIT1UNIT1 UNIT2UNIT2 UNIT3

Не соображу, как проще написать.
...
Рейтинг: 0 / 0
Помогите с запросом, обратном иерархическому
    #36432079
Wiseman_And
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kasyanov,

with t(c,c1)
as ( values(null,'UNIT1'),('UNIT1','UNIT2'),('UNIT2','UNIT3')
)
select
*
from t;
...
Рейтинг: 0 / 0
Помогите с запросом, обратном иерархическому
    #36432113
kasyanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wiseman_Andkasyanov,

with t(c,c1)
as ( values(null,'UNIT1'),('UNIT1','UNIT2'),('UNIT2','UNIT3')
)
select
*
from t;

Не, вопрос не в этом, извиняюсь, что смутил некорректной постановкой.
Есть строка, содержащая путь от корня к элементу, а надо расписать ее в виде несколько строк, чтобы выводилось кто родитель, кто ребенок. Не вручную, а чтобы только исходя из начальной входной строки.
...
Рейтинг: 0 / 0
Помогите с запросом, обратном иерархическому
    #36432145
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
with t(c) as (values 
('UNIT1/UNIT2/UNIT3')
),
a (parent, child, c) as (
select 
  cast(null as varchar( 10 ))
, cast(substr(c,  1 , coalesce(nullif(locate('/', c),  0 )- 1 , length(c))) as varchar( 10 ))
, cast(substr(c, nullif(locate('/', c),  0 )+ 1 ) as varchar( 100 ))
from t
  union all
select 
  child
, cast(substr(c,  1 , coalesce(nullif(locate('/', c),  0 )- 1 , length(c))) as varchar( 10 ))
, cast(substr(c, nullif(locate('/', c),  0 )+ 1 ) as varchar( 100 ))
from a
where c is not null
)
select parent, child 
from a
...
Рейтинг: 0 / 0
Помогите с запросом, обратном иерархическому
    #36433202
Wiseman_And
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
with t (a1, a2, a3, b1, b2, b3)
as ( values (0, '', 'UNIT1,UNIT2,UNIT3', 0,'','UNIT1,UNIT2,UNIT3')
union all
select a1+1
,substr(a3, 1, case when posstr(a3,',') = 0 then length(a3) else posstr(a3,',')-1 end )
,substr(a3, posstr(a3,',')+1, length(a3)- posstr(a3,',') )
,case when length(a3) < length(b3) then b1+1 else 0 end
,case when length(a3) < length(b3) then substr(b3, 1, case when posstr(b3,',') = 0 then length(b3) else posstr(b3,',')-1 end ) else b3 end
,case when length(a3) < length(b3) then substr(b3, posstr(b3,',')+1, length(a3)- posstr(b3,',') ) else b3 end
from t
where a1 < 3
)
select case when b2 = 'UNIT1,UNIT2,UNIT3' then null else b2 end
,a2
from t
where rtrim(a2) != ''
order by a2
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Помогите с запросом, обратном иерархическому
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]