【发布时间】:2011-10-23 19:01:52
【问题描述】:
我有一个 MySQL 数据库,其中包含 2 个(相关)表:Staff、Supervisors。
员工包含:员工 ID、姓名、成本中心
Supervisors 包含:InstanceID、StaffID、SupervisorID、Obsolete
Staff 表包含公司中的所有员工,Supervisors 表将一个 StaffID (StaffID) 链接到另一个 StaffID (SupervisorID)。如果我们创建一个新的关系(即员工 A 不再向员工 B 报告,而是向员工 C 报告),那么我们创建一个新记录并将原来的 'obsolete' 标志设置为 'true'。
我之所以这样安排是因为主管:下属关系可能会发生变化,并且不能保证正确:我们希望能够更改它们并保持审计跟踪。
我需要做的是获取 CostCentres 的递归列表。
这意味着,假设我从某个成本中心开始。我得到了该成本中心所有员工的名单,并生成了他们所有下属的名单。然后我得到所有这些成本中心的列表,并为每个成本中心重复。
我已经有一些程序,其中两个可能是相关的:
CALL getCostCentre(iCostCentre) /* get a list of all staff in iCostCentre) */
CALL getSupervisees(iSupervisor) /* get a list of all staff who report to iSupervisor */
【问题讨论】:
标签: mysql sql stored-procedures recursion