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:

