Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Рекурсивный запрос. Собрать все ID подчиненных групп.  [new]
ITW
Member

Откуда:
Сообщений: 52
Доброе время суток!

Есть таблица ветки категорий с id и Parentid.

Задача заключается в следующем: нужно для каждой категории собрать в одну стоку все ID которые к ней относятся.
Например:
declare @t table (
[id] [bigint],
[Parentid] [bigint],
[Name] [nvarchar](50)
)

insert into @t

select 1 as [Id], Null [Parentid] , N'Категория1'[Name] union all
select 2 as [Id], 1 [Parentid] , N'Категория2'[Name] union all
select 3 as [Id], 2 [Parentid] , N'Категория3'[Name] union all
select 4 as [Id], 2 [Parentid] , N'Категория4'[Name] union all
select 5 as [Id], Null [Parentid] , N'Категория5'[Name] union all
select 6 as [Id], 5 [Parentid] , N'Категория6'[Name] 
select * from @t;

результат должен быть:
1NULLКатегория12;3;4
21Категория23;4
32Категория3
42Категория4
5NULLКатегория56
65Категория6


Задача возможно уже и обсуждалась, но поиск ничего не дал.

Заранее спасибо!
4 дек 14, 18:36    [16951774]     Ответить | Цитировать Сообщить модератору
 Re: Рекурсивный запрос. Собрать все ID подчиненных групп.  [new]
Glory
Member

Откуда:
Сообщений: 104760
ITW
Задача возможно уже и обсуждалась, но поиск ничего не дал.

Настолько часто, что уже включена в FAQ
4 дек 14, 18:38    [16951786]     Ответить | Цитировать Сообщить модератору
 Re: Рекурсивный запрос. Собрать все ID подчиненных групп.  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
ITW, задача разделяется на две части:
1) построить рекурсивный запрос - т.е. для каждой категории найти перечень всех ее дочерних категорий
2) объединить строки с дочерними категориями в одну.

Вторая задача действительно есть в FAQ. Первая даже проще, можно легко найти на том же MSDN: http://msdn.microsoft.com/ru-ru/library/ms175972.aspx, пример Г.
4 дек 14, 18:44    [16951825]     Ответить | Цитировать Сообщить модератору
 Re: Рекурсивный запрос. Собрать все ID подчиненных групп.  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8308
ITW,

рассмотрите переход на тип данных hierarchyid, это избавит от рекурсии, как минимум.
5 дек 14, 11:38    [16954313]     Ответить | Цитировать Сообщить модератору
 Re: Рекурсивный запрос. Собрать все ID подчиненных групп.  [new]
yaxta
Member

Откуда: азербайджан,баку
Сообщений: 518
дорогой автор
вы же решали етот проблемы?
5 дек 14, 15:01    [16956153]     Ответить | Цитировать Сообщить модератору
 Re: Рекурсивный запрос. Собрать все ID подчиненных групп.  [new]
yaxta
Member

Откуда: азербайджан,баку
Сообщений: 518
и версия скл какая?
5 дек 14, 15:01    [16956158]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить