[英]SQL server - climb up in the tree structure
我有一些名为Object的sql表,它将表数据保存在ObjectID,ParentID等字段中。 我实现了递归过程,该过程通过从树中的objectID向下选择所有内容,如下所示:
1.
1.1.
1.2.
1.2.1.
...
现在o需要“爬升”-通过某些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
这是用于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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.