如何编写这个递归MySQL程序?

时间:2011-08-10 05:27:59

标签: mysql sql stored-procedures recursion

我有一个MySQL数据库,其中包含2个(相关)表:Staff,Supervisors。

员工包含:StaffID,Name,CostCentre

和主管包含:InstanceID,StaffID,SupervisorID,已过时

Staff表包含公司中的所有员工,Supervisors表将一个StaffID(StaffID)链接到另一个StaffID(SupervisorID)。如果我们创建一个新的关系(即员工A不再向员工B报告,而是向员工C报告),那么我们创建一个新记录并将原来的“过时”标志设置为“真实”。

我已经这样安排了,因为主管:下属关系可能会发生变化,并且不能保证是正确的:我们希望能够更改它们并维护审计跟踪。

我需要做的是获取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 */

1 个答案:

答案 0 :(得分:0)

我会创建一个包含员工和主管的单个表,让我们称之为Employee,另一个表用于保存关系(每个表都有一个删除标志字段和一个用于审计试用的更改日期字段)。表关系有一个下级和一个主。还有一个成本中心表,其中包含对员工的引用。您可以下载一些开源CRM(可能会使用它)并最终学习如何构建数据库。关于成本中心,您可以从标准CRM中的表组中学习

相关问题