powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите с рекурсивным запросом
8 сообщений из 8, страница 1 из 1
Помогите с рекурсивным запросом
    #39935241
Romanov-krd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как мне в поле PARENT_ID или в новом вывести id родителя самого верхнего уровня. Т.е. запрос должен проходить по всей иерархии и вытаскивать для OBJECT_ID родительский элемент самого верхнего уровня

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
with cte
(
OBJECT_ID,OBJECT_NAME,PARENT_ID, lev
)as
(
select  OBJECT_ID,OBJECT_NAME,PARENT_ID, 0 as lev
 from HYP_DS_TOPDOWN.dbo.HSP_OBJECT o
where o.OBJECT_ID=32
union all
select  o2.OBJECT_ID,o2.OBJECT_NAME,o2.PARENT_ID, o3.lev+1
 from HYP_DS_TOPDOWN.dbo.HSP_OBJECT o2
 inner join cte o3 on o2.PARENT_ID=o3.OBJECT_ID 
)

select * from cte
...
Рейтинг: 0 / 0
Помогите с рекурсивным запросом
    #39935253
iiyama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Romanov-krd,
?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
with cte
(
OBJECT_ID,OBJECT_NAME,PARENT_ID, lev, OBJECT_ID as [root_object]
)as
(
select  OBJECT_ID,OBJECT_NAME,PARENT_ID, 0 as lev
 from HYP_DS_TOPDOWN.dbo.HSP_OBJECT o
where o.OBJECT_ID=32
union all
select  o2.OBJECT_ID,o2.OBJECT_NAME,o2.PARENT_ID, o3.lev+1, o3.[root_object]
 from HYP_DS_TOPDOWN.dbo.HSP_OBJECT o2
 inner join cte o3 on o2.PARENT_ID=o3.OBJECT_ID 
)

select * from cte
...
Рейтинг: 0 / 0
Помогите с рекурсивным запросом
    #39935269
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Romanov-krd,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
with cte
(
	OBJECT_ID,OBJECT_NAME,PARENT_ID, lev
)as
(
select OBJECT_ID AS ROOT_ID, OBJECT_NAME AS ROOT_NAME, OBJECT_ID,OBJECT_NAME,PARENT_ID, 0 as lev
 from HYP_DS_TOPDOWN.dbo.HSP_OBJECT o
where o.OBJECT_ID=32
union all
select o3.ROOT_ID, o3.ROOT_NAME, o2.OBJECT_ID,o2.OBJECT_NAME,o2.PARENT_ID, o3.lev+1
 from HYP_DS_TOPDOWN.dbo.HSP_OBJECT o2
 inner join cte o3 on o2.PARENT_ID=o3.OBJECT_ID 
)

select * from cte



Еще можете посмотреть пример рекурсии вот здесь, там тоже верхний родитель прокидывается. рекурсия с дублями
...
Рейтинг: 0 / 0
Помогите с рекурсивным запросом
    #39935815
Romanov-krd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iiyama,

OBJECT_ID,OBJECT_NAME,PARENT_ID, lev, OBJECT_ID as [root_object]

а что тут изменить чтобы ошибки не было?
...
Рейтинг: 0 / 0
Помогите с рекурсивным запросом
    #39935818
Romanov-krd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
a_voronin,

пишет в cte больше столбцов чем в листе, но не понятно какие там лишние
...
Рейтинг: 0 / 0
Помогите с рекурсивным запросом
    #39935831
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Romanov-krd,

Колонки дополнительне туда включите.
...
Рейтинг: 0 / 0
Помогите с рекурсивным запросом
    #39936359
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Romanov-krd,

просто замените
Код: sql
1.
2.
3.
4.
with cte
(
	OBJECT_ID,OBJECT_NAME,PARENT_ID, lev
)as


на
Код: sql
1.
with cte AS
...
Рейтинг: 0 / 0
Помогите с рекурсивным запросом
    #39936394
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Romanov-krd,

,o2.PARENT_ID, замените на ,cte.parent_id, .
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите с рекурсивным запросом
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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