powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Иерархический запрос
7 сообщений из 7, страница 1 из 1
Иерархический запрос
    #39265533
for_hturew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день уважаемые!

Есть табличка с ID на базе которого выстроена иерархия с 3-мя уровнями вложенности (и т.о. сформирован PARENT_ID).

Строю запрос,

select
(select parent_id from test t2 where t2.id = tt.parent_id) PAR_2
from TEST TT

Что дает результат:


Как для детей 3-го уровня вложенности присвоить код 1-го - как на примере чтобы было 1700.

Заранее огромное спасибо.
...
Рейтинг: 0 / 0
Иерархический запрос
    #39265545
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
for_hturew,
connect_by_root
...
Рейтинг: 0 / 0
Иерархический запрос
    #39265551
for_hturew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если Вас не затруднит применительно к данному варианту как будет выглядеть запрос.

Заранее спасибо
...
Рейтинг: 0 / 0
Иерархический запрос
    #39265552
Фотография Egoр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
for_hturewЕсли Вас не затруднит применительно к данному варианту как будет выглядеть запрос.Вы когда нибудь иерархические запросы на Oracle создавали?
...
Рейтинг: 0 / 0
Иерархический запрос
    #39265801
for_hturew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Опыта в написании запросов совсем мало, вот что получилось:

(SELECT VT1.Parent_Id FROM VERSION_TASK VT1 WHERE VT1.ID = VT.ID and VT1.Version_Id = VT.Version_Id and level <= 4 START WITH VT1.id = (select min (VT2.id) from VERSION_TASK VT2 where VT2.version_id = VT.Version_Id)
CONNECT BY PRIOR vt1.id = vt1.parent_id) as MEROPR

(select parent_id from VERSION_TASK VT2 where VT2.id = (SELECT VT1.Parent_Id FROM VERSION_TASK VT1 WHERE VT1.ID = VT.ID and VT1.Version_Id = VT.Version_Id and level <= 4 START WITH VT1.id = (select min (VT2.id) from VERSION_TASK VT2 where VT2.version_id = vt.version_id)
CONNECT BY PRIOR vt1.id = vt1.parent_id)) as NAPR

Данная конструкция выдает (уточню в таблице на 3 а 5 уровней иерархии, нужно для 5-го уровня присвоить значение 3-го):
Для 4-го уровня получается.. что забыл?

...
Рейтинг: 0 / 0
Иерархический запрос
    #39266020
Фотография Egoр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
for_hturew,

Как вы определяете, какой элемент является альфа-парентом, а какой - нет?
После ответа на этот вопрос используйте такой запрос:
Код: plsql
1.
2.
3.
4.
select t.*, connect_by_root(id) as alpha_parent_id
from table t
start with [условие про альфа-парентов]
connect by t.parent_id = prior t.id
...
Рейтинг: 0 / 0
Иерархический запрос
    #39266040
for_hturew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Егор, буду пробовать... спасибо за наводку.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Иерархический запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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