在表格中有列ID,标题和ParentID。 ParentID用于同一个表中被视为其父项的条目的ID - 因此ParentID为NULL的任何条目本身就是父条目。
我需要一个查询,它将遍历每个父项并列出其下面的任何子项(理想情况下用连字符或其他东西来表示其从属关系)是否有人知道如何做到这一点或如何指向正确的方向?< / p>
(我已经研究了T-SQL并阅读了许多类似的在线问题,但是我的SQL不够清晰,无法理解它,所以我非常感谢一些指针!)
答案 0 :(得分:2)
你在这里!
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
答案 1 :(得分: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