描述:
语法
T.pjoin(K:..,x:F,…; csi:z,Ki:…,xi:Fi,…; …)
备注:
虚表T定义计算,将T与csi 根据关联键连接,结果将x:F,…与xi:Fi,…组成的序列返回到新虚表中。
csi 可以为游标或者排列,x:F,…缺省为T的所有列。要求T与csi对关联键有序。
T和csi是一对多时,xi是聚合表达式。
T和csi是多对一时,csi的记录将重复。
参数z控制连接方式,z只能是省略或者为null。z省略时为内连接;z为null时为左连接,z为null且xi:Fi全部省略时仅保留匹配不上的T的记录。
参数:
T |
虚表。 |
K |
T中的关联键。 |
x |
T的计算表达式。 |
F |
表达式x的字段名称。 |
csi |
游标/排列。 |
z |
连接方式。 |
Ki |
csi中的关联键。 |
xi |
csi的计算表达式。 |
Fi |
表达式xi的字段名称。 |
返回值:
虚表
选项:
@f |
全连接,使用该选项时忽略参数z,不支持与@r同时使用。 |
示例:
连接同维表:
|
A |
|
1 |
=create(file).record(["statename-pj.ctx"]) |
组表statename-pj.ctx对STSTEID有序,内容如下: |
2 |
=pseudo(A1) |
由组表产生虚表。 |
3 |
=connect("demo").query("select STATEID,POPULATION from STATEINFO").sort(STATEID) |
返回对STATEID有序的排列: |
4 |
=connect("demo").query("select STATEID,CAPITAL from STATECAPITAL").sort(STATEID) |
返回对STATEID有序的排列: |
5 |
=A2.pjoin(STATEID,STATEID:ID,NAME;A3,STATEID,POPULATION;A4,STATEID,CAPITAL) |
虚表A2定义计算,根据关联键STATEID连接虚表与A3、A4排列,然后将STATEID列的列名称定义为ID,结果返回新虚表。 |
6 |
=A5.cursor().fetch() |
读取A5虚表中的数据,此时A2虚表执行A5中定义的计算操作,返回内容如下: |
A和Ai是一对多时:
|
A |
|
1 |
=create(file).record(["dep-pj.ctx"]) |
组表dep-pj.ctx对DEPT有序,内容如下: |
2 |
=pseudo(A1) |
由组表产生虚表。 |
3 |
=demo.cursor("select EID,NAME,DEPT from EMPLOYEE").sortx(DEPT) |
返回游标,内容如下: |
4 |
=A2.pjoin(DEPT;A3,DEPT,count(EID):Num) |
虚表A2定义计算,虚表与A3为一对多关系,根据DEPT连接虚表与A3, 并计算每个DEPT下的EID数量,计算结果作为Num列,结果返回新虚表。 |
5 |
=A4.import() |
读取A4虚表中的数据,此时A2虚表执行A4中定义的计算操作,返回内容如下: |
A和Ai是多对一时:
|
A |
|
1 |
=create(file).record(["cities-pj.ctx"]) |
组表cities-pj.ctx对STATEID有序,内容如下: |
2 |
=pseudo(A1) |
由组表产生虚表。 |
3 |
=connect("demo").cursor("SELECT top 20 STATEID,CAPITAL FROM STATECAPITAL").sortx(STATEID) |
返回游标,内容如下: |
4 |
=A2.pjoin(STATEID,CID,NAME,POPULATION;A3,STATEID,CAPITAL ) |
虚表A2定义计算,虚表与A3为多对一关系,根据STATEID字段关联,A3的字段值会重复出现在结果集中,结果返回新虚表。 |
5 |
=A4.import() |
读取A4虚表中的数据,此时A2虚表执行A4中定义的计算操作,返回内容如下: |
全连接:
|
A |
|
1 |
=create(file).record(["cities-pj.ctx"]) |
组表cities-pj.ctx对STATEID有序,内容如下: |
2 |
=pseudo(A1) |
由组表产生虚表。 |
3 |
=connect("demo").cursor("SELECT top 20 STATEID,CAPITAL FROM STATECAPITAL").sortx(STATEID) |
返回游标,内容如下: |
4 |
=A2.pjoin@f(STATEID,CID,NAME,POPULATION;A3,STATEID,CAPITAL ) |
虚表A2定义计算,使用@f选项,全连接,关联不上的记录字段显示为null,结果返回新虚表。 |
5 |
=A4.import() |
读取A4虚表中的数据,此时A2虚表执行A4中定义的计算操作,返回内容如下: |
左连接方式1:
|
A |
|
1 |
=create(file).record(["cities-pj.ctx"]) |
组表cities-pj.ctx对STATEID有序,内容如下: |
2 |
=pseudo(A1) |
由组表产生虚表。 |
3 |
=connect("demo").cursor("SELECT top 20 STATEID,CAPITAL FROM STATECAPITAL").sortx(STATEID) |
返回游标,内容如下: |
4 |
=A2.pjoin(STATEID,CID,NAME,POPULATION;A3:null,STATEID,CAPITAL ) |
虚表A2定义计算,z参数为null时为左连接,虚表中的记录全部列出,A3中关联不上的字段显示为null ,结果返回新虚表。 |
5 |
=A4.import() |
读取A4虚表中的数据,此时A2虚表执行A4中定义的计算操作,返回内容如下: |
左连接方式2:
|
A |
|
1 |
=create(file).record(["cities-pj.ctx"]) |
组表cities-pj.ctx对STATEID有序,内容如下: |
2 |
=pseudo(A1) |
由组表产生虚表。 |
3 |
=connect("demo").cursor("SELECT top 20 STATEID,CAPITAL FROM STATECAPITAL").sortx(STATEID) |
返回游标,内容如下: |
3 |
=A2.pjoin(STATEID;A3:null,STATEID) |
虚表A2定义计算,z参数为null且参数xi:Fi省略时,仅保留匹配不上的虚表的记录,结果返回新虚表。 |
4 |
=A3.import() |
读取A3虚表中的数据,此时A2虚表执行A3中定义的计算操作,返回内容如下: |