P.pjoin ()

阅读(149) 标签: 关联键, 连接, 序列,

描述:

通过关联键连接多个序表/排列。

语法

P.pjoin(K:..,x:F,…;Ai:z,Ki:…,xi:Fi,…; …)

备注:

将序表/排列P与序表/排列Ai根据关联键连接,返回x:F,…xi:Fi,…组成的序列x:F,…缺省为P的所有列

PAi是一对多时,xi是聚合表达式。

PAi是多对一时,Ai的记录将重复。

参数z控制连接方式,z只能是省略或者为nullz省略时为内连接;znull时为左连接,znullxi:Fi全部省略时仅保留匹配不上的P的记录。

参数:

A

序表/排列。

K

P中的关联键。

x

P的计算表达式。

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连接A1A2A3,然后将STATEID列的列名称定义为ID,结果如下:

AAi是一对多时:

 

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)

A1A2为一对多关系,根据DEPT连接游标A1A2, 并计算每个DEPT下的EID数量,计算结果作为Num,返回内容如下:

 AAi是多对一时:

 

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 )

A1A2为多对一关系,根据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的记录,结果如下: