在查询或者展现序表时,外键字段的使用和普通字段是相同的,但是在使用中需要注意外键字段的数据类型。
如下面的例子,在城市信息中,选出州名中包含“la”的,这时可以在过滤表达式中,直接调用外键State的NAME字段过滤数据:
|
A |
1 |
=demo.query("select * from CITIES") |
2 |
=demo.query("select STATEID, NAME, ABBR, CAPITAL from STATES") |
3 |
=A1.derive(A2.select@1(STATEID==A1.STATEID):State) |
4 |
=A3.derive(State.ABBR:SA) |
5 |
=A2.derive(A1.select(STATEID==A2.STATEID):Cities) |
6 |
=A4.select(like(State.NAME,"*la*")) |
注意此时用到的外键字段类型是记录,A6中的计算结果如下:
也可以将外键字段作为排序依据,如根据本州中城市记录的数量,对州数据降序排序:
|
A |
1 |
=demo.query("select * from CITIES") |
2 |
=demo.query("select STATEID, NAME, ABBR, CAPITAL from STATES") |
3 |
=A1.derive(A2.select@1(STATEID==A1.STATEID):State) |
4 |
=A3.derive(State.ABBR:SA) |
5 |
=A2.derive(A1.select(STATEID==A2.STATEID):Cities) |
6 |
=A5.sort(-Cities.len()) |
注意,这里使用到的外键字段类型是排列,A6中的排序结果如下:
如果序表的某个外键字段所引用的记录中,仍然包含外键字段,是可以继续引用的。如,列出所在州恰好有3个城市记录的城市信息:
|
A |
1 |
=demo.query("select * from CITIES") |
2 |
=demo.query("select STATEID, NAME, ABBR, CAPITAL from STATES") |
3 |
=A2.derive(A1.select(STATEID==A2.STATEID):Cities) |
4 |
=A1.derive(A3.select@1(STATEID==A1.STATEID):State) |
5 |
=A4.select(State.Cities.len()==3) |
在这里,A4在城市信息中添加州信息时,用的并非是原始的州信息,而是A3中包含着外键字段的州信息。这样,在A5中就可以查询到所需要的结果: