powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Проблемы с иерархическим вопросом
3 сообщений из 3, страница 1 из 1
Проблемы с иерархическим вопросом
    #39295229
Всем привет!
Есть таблица id, parent_id с произвольным количеством уровней иерархии. Родителя может не быть, а если есть , то и у самого родителя может быть свой родитель:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
with t as (
   select 1 id, null as parent_id from dual
   union all
    select 2 id, 12 as parent_id from dual
       union all
    select 12 id, 22 as parent_id from dual
       union all
    select 22 id, 33 as parent_id from dual
           union all
    select 33 id, null as parent_id from dual
           union all
    select 3 id, 13 as parent_id from dual
           union all
    select 13 id, null as parent_id from dual
   )
   select * from t



Нужно это преобразить таблицу приблизительно к такому виду :
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
 with t as (
   select 1 id, 1 as par from dual
   union all
    select 2 id, 2 as par from dual
       union all
    select 12 id, 12 as par from dual
       union all
    select 12 id, 2 as par from dual
               union all
    select 22 id, 22 as par from dual
           union all
    select 22 id, 12 as par from dual
           union all
    select 22 id, 2 as par from dual
    union all
            select 33 id, 33 as par from dual
           union all
        select 33 id, 22 as par from dual
           union all
    select 33 id, 12 as par from dual
           union all
    select 33 id, 2 as par from dual
   )
   select * from t


То есть как бы "вертикально" выстроить все это дерево.
Вероятнее всего нужно использовать CONNECT BY PRIOR ID = PARENT=ID, однако как применить это именно для "выстраивания вертикально" всю структуру я не понял.
Прошу помощи, большое спасибо!
...
Рейтинг: 0 / 0
Проблемы с иерархическим вопросом
    #39295247
Глупый Телевизор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тупоголовый,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
   ,h as
   (select t.*, sys_connect_by_path(id,'\')||'\' path
   from t
   start with id = 2
   connect by prior parent_id = id)
   select h1.id, h2.id par
   from h h1
   join h h2 on h1.path like '%\'||h2.id||'\%'
...
Рейтинг: 0 / 0
Проблемы с иерархическим вопросом
    #39295318
Глупый Телевизор,
убрал start with и стало как надо, большое спасибо!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Проблемы с иерархическим вопросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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