![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ПОМОГИТЕ написать процедуру извлечения потомков, ПЛЗ!!!... [MSSQL]
DBDev © (2003-04-24 12:40:00)Имеем таблицу Т с деревом замкнутую на себе:
CID int
ParentID int
Category varchar[255]
напр.
1 0 Товары...
2 1 Обувь
3 2 Женская
4 2 Мужская
Нужна процедура возвращающая рекордсет со всеми прямыми и косвенными потомками произвольной ветви дерева, которой на вход подается CID любой ветки.
CREATE PROCEDURE [dbo].[sp_select_childs] @cid int AS
SET nocount ON
DECLARE @tmp AS INT
SELECT @tmp= ParentID FROM Т WHERE CID = @cid
IF (@tmp = 0 )
SET @tmp = @cid
ELSE
BEGIN
WHILE EXISTS (SELECT * FROM Т WHERE CID IN (SELECT ParentID FROM Т WHERE CID = @tmp) )
SELECT @tmp= ParentID FROM ServicesTree WHERE CID = @tmp
END
select @tmp
return @tmp
GO
Что-то она по моему все наоборот делает, в чем ошибка, понять не могу...
DBDev (2003-04-24 14:08:00) [1]2 NAlexey : СЕНКС!!!
NAlexey (2003-04-24 13:09:00) [2]Посмотри здесь: http://www.sql.ru/forum/actualthread.aspx?bid=1&tid=605может поможет
Соловьев (2003-04-24 12:50:00) [3]а зачем всех потомков, хватит только тех, которые следующие.