我需要在SQL Server 2008中创建一个存储过程,根据某个值更新表。关键是我需要递归搜索表,直到找到我要查找的值,然后更新当前记录。例如,我有一个名为Employees的表,包含3列:
EmployeeId
ManagerId
FamilyId
对于表中的每个EmployeeId,我想获取其ManagerId。然后,如果ManagerID!= 0,则获取当前ManagerId的ManagerId(每个ManagerId将指向一个EmployeeId) - 继续进行此操作,直到到达顶级管理者(其中ManagerId == 0)。
找到顶级管理器后,我想使用上述过程的最后一个EmployeeId的值更新启动该过程的原始记录中的FamilyId列。
基本上,我需要对表中的每个记录执行此操作。我正在尝试将所有员工和层次结构中的管理人员的FamilyId设置为根管理人员的值。
我不确定是否应该使用游标或CTE来完成此操作,还是只需在代码中完成它。
非常感谢您的帮助。
谢谢!
EmployeeId
ManagerId
FamilyId
对于表中的每个EmployeeId,我想获取其ManagerId。然后,如果ManagerID!= 0,则获取当前ManagerId的ManagerId(每个ManagerId将指向一个EmployeeId) - 继续进行此操作,直到到达顶级管理者(其中ManagerId == 0)。
找到顶级管理器后,我想使用上述过程的最后一个EmployeeId的值更新启动该过程的原始记录中的FamilyId列。
基本上,我需要对表中的每个记录执行此操作。我正在尝试将所有员工和层次结构中的管理人员的FamilyId设置为根管理人员的值。
我不确定是否应该使用游标或CTE来完成此操作,还是只需在代码中完成它。
非常感谢您的帮助。
谢谢!
FamilyId
对于任意“根”员工的所有“下属”都是相同的吗?如果是这样,为什么总是要去树的顶部呢? - Andriy M