描述:
管道与集文件/实表外键式连接
语法:
ch.joinx(C:…,f:K:…,x:F,…;…;…;n) 用管道ch中的字段C,…匹配可分段集文件f的键K并找到相应记录
ch.joinx(C:…,T:K:…,x:F,…;…;…;n) 用管道ch中的字段C,…匹配实表T的键K并找到相应记录
备注:
用管道ch中的字段C,…匹配可分段集文件f或者实表T的键K并找到相应记录,然后拼接上该记录的表达式x作为字段F添加到ch中形成新管道,匹配不上外键的记录,字段值缺省填写为null。 f/T对K有序,n是缓存区行数。
选项:
@i |
外键匹配不上的,删除此外键的整条记录 |
@o(F;…) |
原记录整个作为字段F生成新记录,x可以是~ |
@d |
没有x:F参数时,做与@i相反的过滤动作 |
@q |
ch数据量不大或是序列时,有序匹配加快速度 |
@qc |
ch对第一套C:…有序时,可加快速度 |
@u |
不保持ch的原次序 |
参数:
ch |
管道 |
C |
管道ch的外键 |
f |
集文件 |
T |
实表 |
K |
f/T的键 |
x |
f的字段表达式 |
F |
表达式x的字段名 |
n |
缓存区行数 |
返回值:
管道
示例:
集文件:
|
A |
|
1 |
=demo.cursor("select EID,NAME,DEPT,SALARY from EMPLOYEE where EID<10 order by EID" ) |
返回取数游标,数据内容如下: |
2 |
=file("D:\\joinx.btx") |
返回集文件,文件中数据如下: |
3 |
=channel() |
创建管道 |
4 |
=channel() |
|
5 |
=channel() |
|
6 |
=channel() |
|
7 |
=channel() |
|
8 |
=channel() |
|
9 |
=A1.push(A3,A4,A5,A6,A7,A8) |
将游标A1接到管道A3、A4、 A5、 A6、A7和A8,此时数据不会立马被推送到管道 |
10 |
=A3.joinx(EID,A2:EMPLOYEEID,BONUS+1:SALARY1;5) |
常规连接,匹配不上的外键的用null |
11 |
=A4.joinx@i(EID,A2:EMPLOYEEID,BONUS+1:SALARY1;5) |
匹配不上的外键删除整条记录 |
12 |
=A5.joinx@o(F1;EID,A2:EMPLOYEEID,BONUS+1:SALARY1;5) |
原记录整个作为字段F1 |
13 |
=A6.joinx@o(F1;EID,A2:EMPLOYEEID,~:SALARY1;5) |
使用~代替x参数 |
14 |
=A7.joinx@d(EID,A2:EMPLOYEEID;5) |
没有x:F参数时,保留匹配不上的外键记录 |
15 |
=A8.joinx@q(EID,A2:EMPLOYEEID,BONUS+1:SALARY1;5) |
有序的读出f相应记录匹配 |
16 |
=A1.fetch() |
将游标A1的数据推送到管道 |
17 |
=A3.result().fetch() |
|
18 |
=A4.result().fetch() |
|
19 |
=A5.result().fetch() |
|
20 |
=A6.result().fetch() |
|
21 |
=A7.result().fetch() |
|
22 |
=A8.result().fetch() |
|
实表:
|
A |
|
1 |
=demo.cursor("select EID,NAME,DEPT,SALARY from EMPLOYEE where EID<10 order by EID" ) |
返回取数游标,数据内容如下: |
2 |
=file("D:\\PERFORMANCE3.ctx") |
|
3 |
=A2.create() |
打开实表,文件中数据如下: |
4 |
=channel() |
创建管道 |
5 |
=channel() |
|
6 |
=channel() |
|
7 |
=channel() |
|
8 |
=channel() |
|
9 |
=channel() |
|
10 |
=A1.push(A4,A5,A6,A7,A8,A9) |
将游标A1接到管道A3、A4、 A5、 A6、A7和A8,此时数据不会立马被推送到管道 |
11 |
=A4.joinx(EID,A3:EMPLOYEEID,BONUS+1:SALARY1;5) |
常规连接,匹配不上的外键的用null |
12 |
=A5.joinx@i(EID,A3:EMPLOYEEID,BONUS+1:SALARY1;5) |
匹配不上的外键删除整条记录 |
13 |
=A6.joinx@o(F1;EID,A3:EMPLOYEEID,BONUS+1:SALARY1;5) |
原记录整个作为字段F1 |
14 |
=A7.joinx@o(F1;EID,A3:EMPLOYEEID,~:SALARY1;5) |
使用~代替x参数 |
15 |
=A8.joinx@d(EID,A3:EMPLOYEEID;5) |
没有x:F参数时,保留匹配不上的外键记录 |
16 |
=A9.joinx@q(EID,A3:EMPLOYEEID,BONUS+1:SALARY1;5) |
有序的读出实表相应记录匹配 |
17 |
=A1.fetch() |
将游标A1的数据推送到管道 |
18 |
=A4.result().fetch() |
|
19 |
=A5.result().fetch() |
|
20 |
=A6.result().fetch() |
|
21 |
=A7.result().fetch() |
|
22 |
=A8.result().fetch() |
|
23 |
=A9.result().fetch() |
|