5

在一个表中有 ID、Title 和 ParentID 列。ParentID 用于同一表中被视为其父项的条目的 ID - 因此 ParentID 为 NULL 的任何条目本身就是父项。

我需要一个查询,它将遍历每个父级并列出它下面的任何子级(最好用连字符或其他东西表示它的从属)有人知道如何做到这一点或如何为我指明正确的方向吗?

(我研究了 T-SQL 并阅读了许多类似的在线问题,但是我的 SQL 不够清晰,无法理解它,所以我非常感谢一些指针!)

4

2 回答 2

3

这个给你!

WITH n(ID, Title) AS 
                    (SELECT ID, Title
                    FROM YourTable
                    WHERE ID = (SELECT TOP 1 ID FROM YourTable WHERE ParentID IS NULL)
                    UNION ALL 
                    SELECT nplus1.ID, nplus1.Title
                    FROM YourTable as nplus1, n 
                    WHERE n.ID = nplus1.ParentID) 
                    SELECT ID, Title FROM n
于 2012-07-30T12:33:43.143 回答
1

要从自引用表中获取层次结构数据,可以在 sql 2008 中使用 WITH 语法

  WITH n(ID) AS 
   (SELECT ID FROM YourTable 
   UNION ALL 
   SELECT nplus1.ID
   FROM YourTable as nplus1, n 
   WHERE n.ID = nplus1.ParentID) 
   SELECT ID FROM n
于 2012-07-30T11:38:55.903 回答