现在表结构是这样的
dept_id 部门id
par_dept_id 父级部门id ,如果是父级则为 -1
n 部门人数
这种情况下我应该怎么统计,我现在需要所有是 - 1 的部门的人,吧所有子级部门的人统计到父级部门下
oracle 层级查询
网上找到一个供参考:
Id 部门内码,
DeptCode 部门编码,
ParentDeptId 上级部门内码
使用T-SQL:
with Dep as ( select Id,DeptCode,DeptName from Department where Id=1 union all select d.Id,d.DeptCode,d.DeptName from Dep inner join Department d on dep.Id = d.ParentDeptId ) select * from Dep
我赶紧验证一下
@流年煮雪: 昂 记得分我点豆
@小刺猬001: 我都给你了
@流年煮雪: yeah~
@流年煮雪:
使用PL/SQL:
select Id,DeptCode,DeptName from Department start with Id = 1 connect by prior Id = ParentDeptId;
start with 表示从哪一行记录开始递归查询,即根节点 connect by 表示进行递归,后面跟递归条件 prior 表示前一条记录,表示上一条记录的Id = 下一条记录的ParentDeptId 比如上面的SQL语句就可以理解为,以Id 为1的记录为根节点,递归查询下一条记录的ParentDeptId = 前一条记录的Id
这个可以写成存储过程,用递归的方法
具体怎么做,求指点
递归,根据父级查询子集。
怎么做?