11.9 查找上一级引用
单表自连接后,仅查找记录的上一级引用。
在中国行政区划表中,查询各行政区的上级区域名称。
ID | NAME | PARENT_ID |
---|---|---|
1 | China | 0 |
11 | Beijing | 1 |
12 | Tianjin | 1 |
13 | Hebei | 1 |
… | … | … |
1301 | Shijiazhuang | 13 |
1302 | Tangshan | 13 |
… | … | … |
使用 P.nodes(F) 函数查找记录的上一级引用。
脚本:
A | |
---|---|
1 | =connect(“db”) |
2 | =A1.query@x(“select * from ChinaRegion”) |
3 | >A2.switch(PARENT_ID,A2:ID) |
4 | =A2.nodes(PARENT_ID) |
5 | =A4.new(ID,NAME,PARENT_ID.NAME:PARENT_NAME) |
A1 连接数据库
A2 查询中国行政区划表
A3 将 PARENT_ID 外键映射到该 ID 所在的记录,实现自连接。
A4 使用 nodes 函数查找记录的上一级引用
A5 创建由序号、名称和上一级区域名称组成的序表。
运行结果:
A4:
ID | NAME | PARENT_ID |
---|---|---|
1 | China | (null) |
11 | Beijing | [1,China,] |
12 | Tianjin | [1,China,] |
13 | Hebei | [1,China,] |
… | … | … |
1301 | Shijiazhuang | [13,Hebei,] |
1302 | Tangshan | [13,Hebei,] |
1303 | Qinhuangdao | [13,Hebei,] |
… | … | … |
130102 | Changan District | [1301,Shijiazhuang,] |
130104 | Qiaoxi District | [1301,Shijiazhuang,] |
130105 | Xinhua District | [1301,Shijiazhuang,] |
… | … | … |
A5:
ID | NAME | PARENT_NAME |
---|---|---|
1 | China | (null) |
11 | Beijing | China |
12 | Tianjin | China |
13 | Hebei | China |
… | … | … |
1301 | Shijiazhuang | Hebei |
1302 | Tangshan | Hebei |
1303 | Qinhuangdao | Hebei |
… | … | … |
130102 | Changan District | Shijiazhuang |
130104 | Qiaoxi District | Shijiazhuang |
130105 | Xinhua District | Shijiazhuang |
… | … | … |