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:

imagepng

A3:

imagepng