描述:
语法
A.pjoin(K:..,x:F,…;Ai:z,Ki:…,xi:Fi,…; …)
备注:
将序表/排列A与序表/排列Ai根据关联键连接,返回x:F,…与xi:Fi,…组成的序列,x:F,…缺省为A的所有列。
A和Ai是一对多时,xi是聚合表达式。
A和Ai是多对一时,Ai的记录将重复。
参数z控制连接方式,z只能是省略或者为null。z省略时为内连接;z为null时为左连接,z为null且xi:Fi全部省略时仅保留匹配不上的A的记录。
参数:
A |
序表/排列。 |
K |
A中的关联键。 |
x |
A的计算表达式。 |
F |
表达式x的字段名称。 |
Ai |
序表/排列。 |
z |
连接方式。 |
Ki |
Ai中的关联键。 |
xi |
Ai的计算表达式。 |
Fi |
表达式xi的字段名称。 |
返回值
序表
选项:
@o |
有序,用归并。 |
@f |
full join,忽略后面的z参数。 |
示例:
连接多个同维表:
|
A |
|
1 |
=connect("demo").query("select STATEID,NAME from STATENAME") |
返回序表: |
2 |
=connect("demo").query("select STATEID,POPULATION from STATEINFO") |
返回序表: |
3 |
=connect("demo").query("select STATEID,CAPITAL from STATECAPITAL") |
返回序表: |
4 |
=A1.pjoin(STATEID,STATEID:ID,NAME;A2,STATEID,POPULATION;A3,STATEID,CAPITAL) |
根据关联键STATEID连接A1与A2、A3,然后将STATEID列的列名称定义为ID,结果如下: |
A和Ai是一对多时:
|
A |
|
1 |
=demo.query("select top 6 DEPT,MANAGER from DEPARTMENT") |
返回序表内容如下: |
2 |
=demo.query("select EID,NAME,DEPT from EMPLOYEE") |
返回序表内容如下: |
3 |
=A1.pjoin(DEPT;A2,DEPT,count(EID):Num) |
A1与A2为一对多关系,根据DEPT连接游标A1与A2, 并计算每个DEPT下的EID数量,计算结果作为Num列,返回内容如下: |
A和Ai是多对一时:
|
A |
|
1 |
=connect("demo").query("SELECT top 20 CID,NAME,POPULATION,STATEID FROM CITIES") |
返回序表内容如下: |
2 |
=connect("demo").query("SELECT top 20 STATEID,CAPITAL FROM STATECAPITAL") |
返回序表内容如下: |
3 |
=A1.pjoin(STATEID,CID,NAME,POPULATION;A2,STATEID,CAPITAL ) |
A1与A2为多对一关系,根据STATEID字段关联,A2的字段值会重复出现在结果集中,结果如下: |
使用@o选项:
|
A |
|
1 |
=connect("demo").query("SELECT top 20 CID,NAME,POPULATION,STATEID FROM CITIES").sort(STATEID) |
返回以STATEID为序的序列,内容如下: |
2 |
=connect("demo").query("SELECT top 20 STATEID,CAPITAL FROM STATECAPITAL").sort(STATEID) |
返回以STATEID为序的序列,内容如下: |
3 |
=A1.pjoin@o(STATEID,CID,NAME,POPULATION;A2,STATEID,CAPITAL ) |
序列对关联键有序,使用@o选项,用归并方式计算: |
使用@f选项,全连接:
|
A |
|
1 |
=connect("demo").query("SELECT top 20 CID,NAME,POPULATION,STATEID FROM CITIES") |
返回序表内容如下: |
2 |
=connect("demo").query("SELECT top 20 STATEID,CAPITAL FROM STATECAPITAL") |
返回序表内容如下: |
3 |
=A1.pjoin@f(STATEID,CID,NAME,POPULATION;A2,STATEID,CAPITAL ) |
使用@f选项,全连接,关联不上的记录字段显示为null,结果如下: |
左连接方式1:
|
A |
|
1 |
=connect("demo").query("SELECT top 20 CID,NAME,POPULATION,STATEID FROM CITIES").sort(STATEID) |
返回序表内容如下: |
2 |
=connect("demo").query("SELECT top 20 STATEID,CAPITAL FROM STATECAPITAL").sort(STATEID) |
返回序表内容如下: |
3 |
=A1.pjoin(STATEID,CID,NAME,POPULATION;A2:null,STATEID,CAPITAL ) |
z参数为null时为左连接,A1中的记录全部列出,A2中关联不上的字段显示为null,结果如下: |
左连接方式2:
|
A |
|
1 |
=connect("demo").query("SELECT top 20 CID,NAME,POPULATION,STATEID FROM CITIES").sort(STATEID) |
返回序表内容如下: |
2 |
=connect("demo").query("SELECT top 20 STATEID,CAPITAL FROM STATECAPITAL").sort(STATEID) |
返回序表内容如下: |
3 |
=A1.pjoin(STATEID;A2:null,STATEID) |
z参数为null且参数xi:Fi省略时,仅保留匹配不上的A1的记录,结果如下: |