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有序。

该函数为结果集函数。

选项:

@i

匹配不上外键则删除整条记录,缺省填成null

没有x:F参数时,只做针对cs的过滤。

@d

没有x:F参数时,做与@i相反的过滤动作。

@q

ch数据量不大或是序列时,有序匹配加快速度

@u

不保持ch的原次序。

@m

chC有序,f/TK有序,可用归并方式计算。

参数:

ch

管道。

C

管道ch的外键。

f

集文件。

T

实表。

K

f/T的键。

x

f的字段表达式。

F

表达式x的字段名。

n

缓存区行数。

返回值:

管道

示例:

管道与集文件常规连接:

 

A

 

1

=connect("demo").cursor("select CID,NAME,POPULATION,STATEID from CITIES")

返回游标,数据内容如下:

2

=channel(A1)

创建管道,并将A1游标中的数据推送到管道。

3

=file("States.btx")

返回分段集文件,文件中数据如下:

4

=A2.joinx(STATEID,A3:STATEID,NAME:SName,POPULATION:SPopulation;1000)

A2管道中的字段STATEID匹配集文件的STATEID字段,将集文件NAMEPOPULATION列分别作为SNameSPopulation字段添加到A2上,返回管道。

5

=A1.fetch()

A1游标执行取数动作,游标中的数据数据流过管道A2

6

=A2.result().fetch()

获取管道中的数据:

管道与实表连接,使用@i选项,删除外键不匹配的记录:

 

A

 

1

=connect("demo").cursor("select CID,NAME,POPULATION,STATEID from CITIES")

返回游标,数据内容如下:

2

=channel(A1)

创建管道,并将A1游标中的数据推送到管道。

3

=file("StateFile.ctx").open()

返回STATEID为键的实表,数据如下:

4

=A2.joinx@i(STATEID,A3:STATEID,NAME:SName,POPULATION:SPopulation;1000)

A2管道中的字段STATEID匹配实表的STATEID字段,将实表NAMEPOPULATION列分别作为SNameSPopulation字段添加到A2上,返回管道。

使用@i选项,A2管道中外键STATEID匹配不上的记录删除。

5

=A1.fetch()

A1游标执行取数动作,游标中的数据数据流过管道A2

6

=A2.result().fetch()

获取管道中的数据:

管道与集文件连接,使用@d选项,做与@i相反的过滤动作:

 

A

 

1

=connect("demo").cursor("select CID,NAME,POPULATION,STATEID from CITIES")

返回游标,数据内容如下:

2

=channel(A1)

创建管道,并将A1游标中的数据推送到管道。

3

=file("States.btx")

返回分段集文件,文件中数据如下:

4

=A2.joinx@d(STATEID,A3:STATEID)

A2管道中的字段STATEID匹配集文件的STATEID字段,使用@d选项,过滤掉A2中能匹配上的记录。

5

=A1.fetch()

A1游标执行取数动作,游标中的数据数据流过管道A2

6

=A2.result().fetch()

获取管道中的数据:

使用@m选项,归并方式计算:

 

A

 

1

=connect("demo").cursor("select CID,NAME,POPULATION,STATEID from CITIES").sortx(STATEID)

返回游标,数据内容如下:

数据对STATEID有序。

2

=channel(A1)

创建管道,并将A1游标中的数据推送到管道。

3

=file("States.btx")

返回分段集文件,文件中数据如下:

4

=A2.joinx@m(STATEID,A3:STATEID,NAME:SName,POPULATION:SPopulation;1000)

A2STATEID有序,A3STATEID有序,使用@m选项,用归并方式计算。

5

=A1.fetch()

A1游标执行取数动作,游标中的数据数据流过管道A2

6

=A2.result().fetch()

获取管道中的数据: