描述:
管道附加与排列外键式连接动作后返回原管道。
语法:
ch.join(C:.,T:K,x:F,…; …;…)
备注:
管道ch附加计算,用ch的字段C,…匹配序表/排列T的键K,T计算表达式x后作为字段F的值拼接到ch上,返回原管道。
K可为#或者省略,K省略时默认为T的键;K值为#时表示用T表记录的序号,即外键序号化处理,简单概括就是维表的主键是从1开始的自然数,也就是表记录所在行号,这种情况下就可以用键值直接按行号定位维表记录,从而加快与维表关联的速度,进一步提升性能。
如果F在ch中已存在则改写现有字段。时间键值被省略时用now()。
该函数属于附加计算动作。
选项:
@i |
匹配不上的外键删除整条记录,缺省将填成null。 |
@o(Fi; C:.,T:K,x:F,…; …;…) |
原记录作为字段Fi生成新记录。 |
@d |
删除匹配上外键的整条记录,只做针对ch的过滤操作,此时省略参数x:F。 |
@m |
A对C有序,T对K有序,此时可用归并方式计算。 |
参数:
ch |
管道。 |
C |
管道ch的外键,多个时以冒号隔开。 |
T |
序表/排列。 |
K |
T的键。 |
x |
T的字段表达式。 |
F |
表达式x的字段名。 |
返回值:
管道
示例:
|
A |
B |
C |
|
1 |
=connect("demo").cursor("SELECT top 10 CID,NAME,POPULATION,STATEID FROM CITIES") |
|
|
A1格返回游标。 |
2 |
=connect("demo").query("SELECT top 40 * FROM STATECAPITAL").keys(STATEID) |
|
|
A2格返回STATEID为键的序表: |
3 |
=channel() |
=A3.join(STATEID,A2,CAPITAL) |
=B3.fetch() |
A3格中创建管道; B3格中给管道附加计算,将CITIES表与STATECAPITAL表外键式连接,参数K缺省为的STATECAPITAL键,即STATEID,将STATECAPITAL表中的字段CAPITAL拼接到管道中,返回到A3管道。 C3格中执行结果集函数,保留管道当前数据。 |
4 |
=channel() |
=A4.join(STATEID,A2:#,CAPITAL) |
=B4.fetch() |
A4格中创建管道; B4格中给管道附加计算,可以看到STATEID字段是从1开始的自然数,与STATECAPITAL表的记录号是一致的,所以可以将参数K设为#,表示用STATECAPITAL表的序号,可提高计算效率,返回到A4管道。 C4格中执行结果集函数,保留管道当前数据。 |
5 |
=channel() |
=A5.join@i(STATEID,A2,CAPITAL) |
=B5.fetch() |
A5格中创建管道; B5格中给管道附加计算,使用@i选项,匹配不上的外键删除整条记录,缺省将填成null,返回到A5管道。 C5格中执行结果集函数,保留管道当前数据。 |
6 |
=channel() |
=A6.join@d(STATEID,A2) |
=B6.fetch() |
A6格中创建管道; B6格中给管道附加计算,使用@d选项,当参数x:F省略时,删除匹配上外键的整条记录,只做针对CITIES表的过滤操作,返回到A6管道。 C6格中执行结果集函数,保留管道当前数据。 |
7 |
=channel() |
=A7.join@o(cities;STATEID,A2,CAPITAL) |
=B7.fetch() |
A7格中创建管道; B7格中给管道附加计算,使用@o选项,管道原记录作为字段cities生成新记录,返回到A7管道。 C7格中执行结果集函数,保留管道当前数据。 |
8 |
=A1.push(A3,A4,A5,A6,A7) |
|
|
将游标A1中的数据推送到管道A3、A4、A5、A6和A7,此时数据不会立即被推送到管道。 |
9 |
=A1.fetch() |
|
|
A1游标执行取数动作,此时数据才会被推送到管道,然后管道执行计算并记录结果。返回数据如下: |
10 |
=A3.result() |
|
|
获取A3管道计算结果: |
11 |
=A4.result() |
|
|
获取A4管道计算结果: |
12 |
=A5.result() |
|
|
获取A5管道计算结果: |
13 |
=A6.result() |
|
|
获取A6管道计算结果: |
14 |
=A7.result() |
|
|
获取A7管道计算结果: |