список записей которые находятся ниже некоторого ID в иерархии записей

sergey_rft
Дата: 14.10.2003 07:35:41
Здравствуйте. Мне нужно решить такую задачку: есть таблица в которой реализована иерархическая структура записей. Сделано это так есть поле ID и поле IDParent - айди предка. Мне необходимо написать хранимую працедуру которая возвращала бы список записей которые находятся ниже некоторого ID в иерархии записей.
Как это наиболее эффективно сделать?
Спасибо
Oleg K
Дата: 14.10.2003 07:37:32
Where Id>@Id ???

Подробнее можно?
sergey_rft
Дата: 14.10.2003 08:07:15
Пользоваться понятием больше или меньше ID нельзя потомучто можно завести запись верхнего уровня при этом ее ID ,будет больше чем запись в иерархии соседней веточки. Хотя конечно в этой ветке запись будет самой "молодой". ID это автоинкриментное целое число.
Получается что нужно сделать последовательный обход начиная с верхнего уровня выбранной ветки, но это не красиво.
iSestrin
Дата: 14.10.2003 08:16:01
declare @id int

declare @t table (id int, level int)
declare @level int
set @level = 0
insert into @t select @id, @level
while @@rowcount>0 begin
set @level = @level+1
insert into @t select f.id, @level from tree f inner join @t t on f.parentid=t.id where t.level=(@level-1)
end

select * from tree where id in (select id from @t)
and id<>@id --если нужно исключить предка