11.4 查找叶子记录
在中国行政区划表中,查询河北省下属区县。部分数据如下:
ID | NAME | PARENT_ID |
---|---|---|
1 | China | 0 |
11 | Beijing | 1 |
12 | Tianjin | 1 |
13 | Hebei | 1 |
… | … | … |
1301 | Shijiazhuang | 13 |
1302 | Tangshan | 13 |
… | … | … |
根据父记录查找所有从属的叶子记录。使用 P.nodes@d(F,r) 递归查找所有叶子记录。
脚本:
A | |
---|---|
1 | =T(“ChinaRegion.csv”) |
2 | >A1.switch(PARENT_ID,A1:ID) |
3 | =A1.select@1(NAME==“Hebei”) |
4 | =A1.nodes@d(PARENT_ID,A3) |
5 | =A4.new(ID,NAME,PARENT_ID.NAME:PARENT_NAME) |
A1:导入中国行政区划表
A2:将父行政区 ID 外键对象化,转换为相应的父行政区记录,实现外键对象化。
A3:选出河北省的记录。
A4:使用函数 P.nodes() 进行递归查找,其中选项 @d 时递归查找所有叶子记录。
A5:生成由序号、行政区名称和上级行政区名称组成的表。
运行结果:
A4:
ID | NAME | PARENT_ID |
---|---|---|
130102 | Changan District | [1301,Shijiazhuang,] |
130104 | Qiaoxi District | [1301,Shijiazhuang,] |
130105 | Xinhua District | [1301,Shijiazhuang,] |
130107 | Jingxing mining area | [1301,Shijiazhuang,] |
130108 | Yuhua District | [1301,Shijiazhuang,] |
130109 | Gaocheng District | [1301,Shijiazhuang,] |
130110 | Luquan District | [1301,Shijiazhuang,] |
130111 | Luancheng District | [1301,Shijiazhuang,] |
130121 | Jingxing County | [1301,Shijiazhuang,] |
130123 | Zhengding County | [1301,Shijiazhuang,] |
130125 | Xingtang County | [1301,Shijiazhuang,] |
130621 | Lingshou County | [1301,Shijiazhuang,] |
… | … | … |
A5:
ID | NAME | PARENT_NAME |
---|---|---|
130102 | Changan District | Shijiazhuang |
130104 | Qiaoxi District | Shijiazhuang |
130105 | Xinhua District | Shijiazhuang |
130107 | Jingxing mining area | Shijiazhuang |
130108 | Yuhua District | Shijiazhuang |
130109 | Gaocheng District | Shijiazhuang |
130110 | Luquan District | Shijiazhuang |
130111 | Luancheng District | Shijiazhuang |
130121 | Jingxing County | Shijiazhuang |
130123 | Zhengding County | Shijiazhuang |
130125 | Xingtang County | Shijiazhuang |
130621 | Lingshou County | Shijiazhuang |
… | … | … |