ch.joinx()

描述:

管道与集文件/实表外键式连接

语法:

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/TK有序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接到管道A3A4 A5 A6A7A8,此时数据不会立马被推送到管道

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接到管道A3A4 A5 A6A7A8,此时数据不会立马被推送到管道

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()