Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Проблемы с иерархическим вопросом / 3 сообщений из 3, страница 1 из 1
21.08.2016, 23:28:36
    #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
22.08.2016, 01:49:23
    #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
22.08.2016, 09:36:38
    #39295318
Проблемы с иерархическим вопросом
Глупый Телевизор,
убрал start with и стало как надо, большое спасибо!
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Проблемы с иерархическим вопросом / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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