3.5.2外键字段的使用

在查询或者展现序表时,外键字段的使用和普通字段是相同的,但是在使用中需要注意外键字段的数据类型。

如下面的例子,在城市信息中,选出州名中包含“la”的,这时可以在过滤表达式中,直接调用外键StateNAME字段过滤数据:

 

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中就可以查询到所需要的结果: