powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сложная иерархическая сортировка
3 сообщений из 3, страница 1 из 1
Сложная иерархическая сортировка
    #39301386
Всем привет, прошу помощи с сортировкой, данные выглядят следующим образом:
Код: 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.
25.
26.
27.
with t as 
(
 select 1 id  ,null parent_id,'S' type ,1  lvl,'компания А' subject from dual 
 union all
 select 2 id  ,null parent_id,'S' type ,1  lvl,'компания Б' subject from dual 
 union all
 select 3 id  ,null parent_id,'O' type ,2  lvl,'компания А' subject from dual 
  union all
 select 4 id  ,null parent_id,'O' type ,2  lvl,'компания Б' subject from dual 
   union all
 select 5 id  ,3 parent_id,'O' type ,3  lvl,'компания А' subject from dual 
    union all
 select 6 id  ,3 parent_id,'O' type ,3  lvl,'компания А' subject from dual 
    union all
 select 77 id  ,3 parent_id,'O' type ,3  lvl,'компания А' subject from dual 
    union all
 select 88 id  ,3 parent_id,'O' type ,3  lvl,'компания А' subject from dual 
     union all
 select 9 id  ,77 parent_id,'O' type ,4  lvl,'компания А' subject from dual 
    union all
 select 10 id  ,88 parent_id,'O' type ,4  lvl,'компания А' subject from dual 
     union all
 select 11 id  ,10 parent_id,'O' type ,5  lvl,'компания А' subject from dual
     union all
 select 12 id  ,4 parent_id,'O' type ,3  lvl,'компания Б' subject from dual 
) 
SELECT * FROM T;


Здесь TYPE- это тип компании субъект или объект, если это S, то никакой вложенности есть, если O,то есть. LVL - уровень вложенности. SUBJECT имя компании.
Нужно как отсортировать это все таким образом, чтобы сперва сортировка по компаниям на lvl=1, потом на втором уровне если, например, на есть два объекта сперва должно идти его полное дерево, а потом полное дерево второго . Если визуально то вот:

Код: 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.
25.
26.
27.
with t as 
(
 select 1 id  ,null parent_id,'S' type ,1  lvl,'компания А' subject from dual 
 union all
 select 2 id  ,null parent_id,'S' type ,1  lvl,'компания Б' subject from dual 
  union all
 select 4 id  ,null parent_id,'O' type ,2  lvl,'компания Б' subject from dual 
 union all
 select 12 id  ,4 parent_id,'O' type ,3  lvl,'компания Б' subject from dual 
  union all
 select 3 id  ,null parent_id,'O' type ,2  lvl,'компания А' subject from dual 
   union all
 select 5 id  ,3 parent_id,'O' type ,3  lvl,'компания А' subject from dual 
    union all
 select 6 id  ,3 parent_id,'O' type ,3  lvl,'компания А' subject from dual 
    union all
 select 77 id  ,3 parent_id,'O' type ,3  lvl,'компания А' subject from dual 
   union all
 select 9 id  ,77 parent_id,'O' type ,4  lvl,'компания А' subject from dual 
    union all
 select 88 id  ,3 parent_id,'O' type ,3  lvl,'компания А' subject from dual 
    union all
 select 10 id  ,88 parent_id,'O' type ,4  lvl,'компания А' subject from dual 
     union all
 select 11 id  ,10 parent_id,'O' type ,5  lvl,'компания А' subject from dual
) 
SELECT * FROM T



Я уже и row_number() пытался применить и джоины к подзапросам , но результат всегда был один.
Очень нуждаюсь в помощи.
Большое спасибо!
...
Рейтинг: 0 / 0
Сложная иерархическая сортировка
    #39301401
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем понятное описание (не вполне соответствует "наглядности"), попробуйте так:
Код: plsql
1.
2.
3.
4.
5.
SELECT t.*
FROM T
connect by prior id = parent_id
start with parent_id is null
order siblings by type desc, subject;
...
Рейтинг: 0 / 0
Сложная иерархическая сортировка
    #39301406
andrey_anonymous,
Да я случайно опубликовал ,не проверив текст. Сам в шоке был от описания.
Спасибо, как только протестирую - отпишу.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сложная иерархическая сортировка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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