使用Microsoft SQL Server Management Studio 2012
我的表格中包含“DepartmentID”“DepartmentName”和“FatherDepartmentID”。
示例:我的部门名称为“Root”,ID为“25”。然后我有几个其他部门与FatherDepartmentID“25”。这意味着那些是“Root”部门的子部门。
非常困难的部分:然后可能会出现一个父部门有一个ChildDepartment的情况,而这个ChildDepartment(可以说是ID“22”)可以有另一个ChildDepartment(FatherID“22”)。
现在我的目标是我拥有第一个父系部门(根部门)的ID,然后我想要所有子部门的部门名称。并进一步递归(Childdepartments的ChildDepartments的所有名称,依此类推)。
从我的老板那里得知,它只能在一个查询中完成(而且他说可以)。
到目前为止,我设法找到所有第一级ChildDepartments,但没有一个进一步向下(递归部分)。
在下面的查询中,我有一个人的ID(68)(来自另一个表的,其中ID与根部门链接,因为它是关于某些部门拥有权限的人)和查找所有第一级ChildDepartments:
SELECT B.DepartmentDesc
FROM CompanyDepartmentPermission A
INNER JOIN CompanyDepartment B ON A.DepartmentID=B.DepartmentID OR
A.DepartmentID=B.FatherDepartmentID
WHERE A.PEmplID = 68
由于我对SQL查询非常陌生,所以我没有办法和想法如何解决这个问题,我做了大量的研究。如果有人能提出一个有效的解决方案,我会非常感谢解释,因为我想学习和理解:)