表中存放的是后台系统的功能模块信息,

ModuleID表示模块的编号、MoudleName表示模块名、ModuleFather表示模块的父级编号(如果为0则表示自己是最高级的)。       

现在我们要查询出OA管理的所有子模块(不限级)。       

由SQL语句如下。

WITH Modules(ModuleId,ModuleName,ModuleFather,ModuleSort)
AS
(
	SELECT ModuleId,ModuleName,ModuleFather,ModuleSort
	FROM dbo.Module
	WHERE ModuleId=1
	UNION ALL
	SELECT m.ModuleId,m.ModuleName,m.ModuleFather,m.ModuleSort
	FROM dbo.Module m
	INNER JOIN Modules a
	ON a.ModuleId=m.ModuleFather
)

SELECT m.ModuleId,m.ModuleName,m.ModuleFather,m.ModuleSort
FROM Modules m
INNER JOIN dbo.Module mod
ON m.ModuleFather=mod.ModuleId