我有一个名为tblmodules的表,它有3列:moduleid,name,parent_id。列parent_id获取其他模块的值。例如:
Moduleid Name Parentid
-------- ----- --------
1 grandparent Null
2 parent 1
3 child 2
4 childofChild 3
如果我将存储过程作为祖父项的参数给出,我想构造一个存储过程来获取所有子节点。对于上面的例子我不想只有(父)但我想要孩子和孩子,因为他们在祖父母下。有任何帮助吗?
答案 0 :(得分:3)
CREATE PROC YourProc
@ModuleId INT
AS
WITH R
AS (SELECT *
FROM YourTable
WHERE Moduleid = @ModuleId
UNION ALL
SELECT Y.*
FROM YourTable Y
JOIN R
ON R.Moduleid = Y.Parentid)
SELECT *
FROM R