У меня есть таблица SQL с именем Object, которая сохраняет данные дерева в полях ObjectID, ParentID и других. Я реализовал процедуру recurse, которая выбирает все объекты по идентификатору объекта из дерева, например:
1.
1.1.
1.2.
1.2.1.
...
Теперь мне нужно «подняться» - по какому-то ObjectID мне нужно выбрать все вверх, например:
1.2.1.
1.2.
1.
Как я могу это сделать?
Например, моя процедура "down" выглядит так:
ALTER PROCEDURE [dbo].[Object_SelectDownByRoot_Simple]
@ObjectID int
AS
WITH tree (ObjectID, ParentID, ObjectName, ObjectCode) AS
(
SELECT ObjectID, ParentID, ObjectName, ObjectCode
FROM dbo.[ObjectQ] ofs
WHERE( ObjectID = @ObjectID )
UNION ALL
SELECT ofs.ObjectID, ofs.ParentID, ofs.ObjectName, ofs.ObjectCode
FROM dbo.[ObjectQ] ofs
JOIN tree ON tree.ObjectID = ofs.ParentID
)
SELECT
ObjectID, ParentID, ObjectName, ObjectCode
FROM tree