Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ПОМОГИТЕ написать процедуру извлечения потомков, ПЛЗ!!!... [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]

а зачем всех потомков, хватит только тех, которые следующие.


Наверх

Титульная страница Поиск, карта сайта Написать письмо