Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как сделать такую ХП?  [new]
vah
Member

Откуда:
Сообщений: 2694
DECLARE @grps TABLE (grp_id int, num varchar(50), grp varchar(255), parent_id int)

INSERT INTO @grps(grp_id, num, grp, parent_id)
SELECT 1,'1','',1
UNION ALL SELECT 2,'2','',2
UNION ALL SELECT 3,'2.1','',2
UNION ALL SELECT 4,'2.1.1','',3
UNION ALL SELECT 5,'1.1','',1
UNION ALL SELECT 6,'1.1.1','',5
UNION ALL SELECT 7,'2.1.2','',3
DECLARE @num VARCHAR(50)
SET @num = '2.1'


declare @tbl table (grp_id int, num varchar(50), grp varchar(255), parent_id int)

--следлующее не работает. как вставить в @tbl результаты рекурсивного селекта
INSERT INTO @tbl(grp_id, num, grp, parent_id)

;WITH Q(grp_id, num, grp, parent_id) AS
(
SELECT grp_id, num, grp, parent_id FROM @grps g WHERE g.num = @num
UNION ALL
SELECT g.grp_id, g.num, g.grp, g.parent_id FROM Q JOIN @grps g
ON Q.grp_id=g.parent_id
)
SELECT grp_id, num, grp, parent_id FROM Q



Заранее благодарен.
14 июн 11, 16:37    [10811535]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать такую ХП?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
;WITH Q(grp_id, num, grp, parent_id) AS
(
SELECT grp_id, num, grp, parent_id FROM @grps g WHERE g.num = @num
UNION ALL
SELECT g.grp_id, g.num, g.grp, g.parent_id FROM Q JOIN @grps g 
ON Q.grp_id=g.parent_id
)
INSERT INTO @tbl(grp_id, num, grp, parent_id)
SELECT grp_id, num, grp, parent_id FROM Q
14 июн 11, 16:38    [10811543]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать такую ХП?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Хелп, что ли, читайте, примеры смотрите.
14 июн 11, 16:38    [10811545]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить