Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите с рекурсивным запросом / 8 сообщений из 8, страница 1 из 1
06.03.2020, 15:22
    #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
06.03.2020, 15:44
    #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
06.03.2020, 16:50
    #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
10.03.2020, 08:46
    #39935815
Romanov-krd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с рекурсивным запросом
iiyama,

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

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

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

Колонки дополнительне туда включите.
...
Рейтинг: 0 / 0
11.03.2020, 17:08
    #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
11.03.2020, 18:26
    #39936394
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с рекурсивным запросом
Romanov-krd,

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


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