11.2 循环递归查找所有引用
单表自连接后,对所有记录递归查找指定字段的各级引用。
根据某公司组织结构表,查询各部门的级别(总部是 1 级,分公司 2 级,依此类推)。部分数据如下:
ID | ORG_NAME | PARENT_ID |
---|---|---|
1 | Head Office | 0 |
2 | Beijing Branch Office | 1 |
3 | Shanghai Branch Office | 1 |
4 | Chengdu Branch Office | 1 |
5 | Beijing R&D Center | 2 |
… | … | … |
需要循环每条记录,递归查找每个机构的所有上级部门。使用 A.prior(F) 递归查找引用,默认查找所有引用。
脚本:
A | |
---|---|
1 | =T(“Organization.txt”) |
2 | >A1.switch(PARENT_ID,A1:ID) |
3 | =A1.new(ID,ORG_NAME,~.prior(PARENT_ID).len():LEVEL) |
A1:导入组织机构表。
A2:将父机构 ID 外键对象化,转换为相应的父机构记录,实现自连接。
A3:创建由序号、部门名称和级别构成的新表。其中部门级别,是通过函数 A.prior() 递归查找引用记录的层次数量计算得出。
运行结果:
A1:
A3: