繁体   English   中英

SQL Server-爬上树形结构

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM