我有一些名为Object的sql表,它将树数据保存在ObjectID,ParentID等字段中。我已经实现了recurse过程,它从树中选择了objectID所有内容,如下所示:
1.
1.1.
1.2.
1.2.1.
...
现在需要“爬上来” - 通过一些ObjectID,我需要选择Up,就像这样:
1.2.1.
1.2.
1.
我怎么能这样做?
在示例中,我的“向下”过程如下所示:
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
答案 0 :(得分:0)
这适用于Microsoft SQL Server 2005吗? 2008?
尝试这样的事情;
CREATE PROCEDURE getParentIDs
ID as int,
level as int
AS
GO
ALTER PROCEDURE getParentIDs
ID as int,
level as int
AS
DECLARE @P as int /* <-- change to your ObjectID datatype */
SELECT @P=ParentID FROM tree WHERE ObjectID = ID
SELECT @P, level
UNION ALL
getParentIDs , 1+level /* <-- this might not work... :-/ */
GO