描述:
连接游标对应的序表。
语法:
joinx(csi:Fi,xj,..;…)
备注:
针对有序游标csi的结果集使用归并法计算,返回新游标。
xj参数全省略则使用主键连接。有xj参数没主键则使用xj的值连接。支持多路游标,此时必须路数相同。csi也可以是序表。
假定xj 有序,将多个游标csi按照关联字段/关联表达式xj和x1相等的关系连接,产生以Fi,…为字段的游标。Fi为引用字段,引用原游标序列csi中的记录。注意:xj…仅支持升序。
不管是多少个游标之间关联,都是和cs1中的x1相等判断,因此是一对多的关系。
该函数属于延迟计算函数。
选项:
@f |
全连接,找不到匹配值时,则与null对应。 |
@1 |
左连接(注意:这里是数字1,不是字母l)。 |
@p |
按位置连接,忽略xj参数。 |
@i |
仅用于过滤cs1,忽略Fi参数,与@f@1互斥。 |
@d |
仅用于过滤cs1,只保留找不到的,忽略Fi参数,与@f@1互斥。 |
@u |
只有cs1是游标,其它都是内存序表,此时不要求有序。 |
参数:
Fi |
结果序表的字段名。 |
csi |
用于连接的游标或序表。 |
xj |
连接字段/表达式。 |
返回值:
游标
示例:
使用主键连接:
|
A |
|
1 |
=demo.query("select top 10 EID,NAME,DEPT,GENDER from EMPLOYEE " ).keys(EID).cursor() |
返回游标,游标中的表主键为EID,数据内容如下: |
2 |
=demo.query("select top 10 EID,NAME,RELATION,GENDER,AGE from FAMILY " ).keys(EID) |
返回EID为键的序表,数据内容如下: |
3 |
=joinx(A1:Emp;A2:Family) |
使用主键连接。 |
4 |
=A3.fetch() |
读取A3游标中的数据: |
使用@f选项,全连接:
|
A |
|
1 |
=demo.cursor("select EID,NAME,DEPT,GENDER from EMPLOYEE where EID>2 and EID<10" ) |
返回游标,数据内容如下: |
2 |
=demo.query("select top 10 EID,NAME,RELATION,GENDER,AGE from FAMILY " ) |
返回游标,数据内容如下: |
3 |
=joinx@f(A1:Emp,EID;A2:Family,EID) |
使用@f选项,全连接,无匹配项的用null。 |
4 |
=A3.fetch() |
读取A3游标中的数据: |
使用@1选项,左连接:
|
A |
|
1 |
=demo.cursor("select EID,NAME,DEPT,GENDER from EMPLOYEE where EID>2 and EID<10" ) |
返回游标,数据内容如下: |
2 |
=demo.query("select top 10 EID,NAME,RELATION,GENDER,AGE from FAMILY " ) |
返回游标,数据内容如下: |
3 |
=joinx@1(A1:Emp,EID;A2:Family,EID) |
使用@1选项,左连接,以第一个游标为基准,无匹配项的用null。 |
4 |
=A3.fetch() |
读取A3游标中的数据: |
使用@p选项,按位置连接:
|
A |
|
1 |
=demo.cursor("select EID,NAME,DEPT,GENDER from EMPLOYEE where EID>2 and EID<10" ) |
返回游标,数据内容如下: |
2 |
=demo.query("select top 10 EID,NAME,RELATION,GENDER,AGE from FAMILY " ) |
返回游标,数据内容如下: |
3 |
=joinx@p(A1:Emp,EID;A2:Family,EID) |
使用@p选项,按位置连接。 |
4 |
=A3.fetch() |
读取A3游标中的数据: |
使用@i选项,仅用于过滤:
|
A |
|
1 |
=demo.cursor("select top 10 EID,NAME,DEPT,GENDER from EMPLOYEE" ).sortx(DEPT) |
返回游标,数据内容如下: |
2 |
=demo.query("select top 5 * from DEPARTMENT " ).sort(DEPT) |
返回序表内容如下: |
3 |
=joinx@i(A1,DEPT;A2,DEPT) |
使用@i选项,过滤A1游标,能匹配上A2的记录保留。 |
4 |
=A3.fetch() |
读取A3游标中的数据: |
使用@d选项,仅用于过滤,与@i结果相反:
|
A |
|
1 |
|
返回游标,数据内容如下: |
2 |
=demo.query("select top 5 * from DEPARTMENT " ).sort(DEPT) |
返回序表内容如下: |
3 |
=joinx@d(A1,DEPT;A2,DEPT) |
使用@d选项,过滤A1游标,不能匹配上A2的记录保留。 |
4 |
=A3.fetch() |
读取A3游标中的数据: |