powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Полученить строку иерархии по пути (Oracle 10g)
9 сообщений из 9, страница 1 из 1
Полученить строку иерархии по пути (Oracle 10g)
    #39425595
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть иерархический справочник со схемой ID-ParentID.
Мне нужно получить из него значение, соответствующее определенному пути в иерархии.
Получить это значение можно так:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
select *
from
(
  select DIRECTORY_ID as ID, VALUE, DESCRIPTION, reverse(sys_connect_by_path(reverse(MNEMONIC),'/')) as PATH
  from DIRECTORY
  connect by DIRECTORY_ID = prior PARENT_ID
)
where PATH like 'configuration/tarifficators/radius/type_detect/type1/attr1/'


А можно ли получить результат сразу?
...
Рейтинг: 0 / 0
Полученить строку иерархии по пути (Oracle 10g)
    #39425630
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.
Код: plsql
1.
reverse(sys_connect_by_path(reverse

В чём говнокодистость этого, хоть знаешь?
...
Рейтинг: 0 / 0
Полученить строку иерархии по пути (Oracle 10g)
    #39425688
реверсия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alibek B.,

У тебя в sys_connect слеш направо /, после reverse меняется на обратный, а проверяешь в where опять прямой.
...
Рейтинг: 0 / 0
Полученить строку иерархии по пути (Oracle 10g)
    #39425696
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
реверсияAlibek B.,

У тебя в sys_connect слеш направо /, после reverse меняется на обратный, а проверяешь в where опять прямой.ну ваапще-то у него два реверса
всё логично
...
Рейтинг: 0 / 0
Полученить строку иерархии по пути (Oracle 10g)
    #39425698
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ой, мамочки, что я несу... ))))))
...
Рейтинг: 0 / 0
Полученить строку иерархии по пути (Oracle 10g)
    #39425743
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.
Код: plsql
1.
2.
  from DIRECTORY
  connect by DIRECTORY_ID = prior PARENT_ID

Отсутствие корней тоже говорит о быдлокоде.
...
Рейтинг: 0 / 0
Полученить строку иерархии по пути (Oracle 10g)
    #39425754
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
with D as
(
  select DIRECTORY_ID as ID, VALUE, DESCRIPTION
  , sys_connect_by_path(MNEMONIC,'/') as PATH
  from DIRECTORY
  connect by PARENT_ID = prior DIRECTORY_ID
  start with PARENT_ID is null
)
select *
from D
where PATH like '/configuration/tarifficators/radius/type_detect/type1/attr1'



Можно ли сразу получить значение VALUE для указанного пути?
...
Рейтинг: 0 / 0
Полученить строку иерархии по пути (Oracle 10g)
    #39425863
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
where connect_by_isleaf = 1
connect by ... and mnemonic = regexp_substr('...', '[^/]+', 1, level)
...
Рейтинг: 0 / 0
Полученить строку иерархии по пути (Oracle 10g)
    #39425932
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, про такое я не сообразил.
Правда у меня в результаты также попадают все остальные корневые записи (с дополнительным условием connect корневые узлы превращаются в конечные ветки без потомков), поэтому добавил в WHERE еще LEVEL > 1.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Полученить строку иерархии по пути (Oracle 10g)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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