P.join()

阅读(2135) 标签: 序表, 排列, 外键式连接,

描述:

序表与排列外键式连接。

语法:

P.join(C:.,T:K,x:F,…; …;…)

备注:

用序表/排列P的字段C,匹配序表/排列T的键找到相应记录,在P上拼接T中的表达式x作为字段F添加到P 上形成新序表。

K只能省略或者是#K省略时默认为T的键;K值为#时表示用T表记录的序号,即外键序号化处理,简单概括就是维表的主键是从1开始的自然数,也就是表记录所在行号,这种情况下就可以用键值直接按行号定位维表记录,从而加快与维表关联的速度,进一步提升性能。

如果FP中已存在则改写现有字段。时间键值被省略时用now()

选项:

@i

匹配不上的外键删除整条记录,缺省将填成null当参数x:F省略时,只做针对P的过滤操作。

@d

当参数x:F省略时,删除匹配上外键的整条记录,只做针对P的过滤操作。

@m

PC有序,TK有序,此时可用归并方式计算。

参数:

P

序表/排列。

C

P的外键,多个时以冒号隔开。

T

序表/排列

K

T的键。

x

T的字段表达式,x可以是~##表示记录在T中的序号,找不到填为null

F

表达式x的字段名。

返回值:

序表/排列

示例:

 

A

 

1

=connect("demo").query("SELECT * FROM CITIES")

CITIES表数据内容:

2

=connect("demo").query("SELECT * FROM STATECAPITAL where STATEID<30").keys(STATEID)

STATECAPITAL表数据内容:

3

=A1.join(STATEID,A2,CAPITAL)

CITIES表与STATECAPITAL表外键式连接,参数K缺省为的STATECAPITAL键,即STATEID,并将STATECAPITAL表中的字段CAPITAL拼接到中成为新序表:

4

=A1.join(STATEID,A2:#,CAPITAL)

可以看到STATEID字段是从1开始的自然数,与STATECAPITAL表的记录号是一致的,所以可以将参数K设为#,表示用STATECAPITAL表的序号,可提高计算效率,返回结果与A3相同。

5

=A1.join@i(STATEID,A2,CAPITAL)

使用@i选项,匹配不上的外键删除整条记录,缺省将填成null

6

=A1.join@i(STATEID,A2)

使用@i选项,当参数x:F省略时,只做针对CITIES表的过滤操作:

7

=A1.join@d(STATEID,A2)

使用@d选项,当参数x:F省略时,删除匹配上外键的整条记录,只做针对CITIES表的过滤操作:

8

=A1.join(STATEID,A2,abc)

x参数值在A2中找不到则填为nul

9

=A1.join(STATEID,A2,CAPITAL:NAME)

如果NAMECITIES表中已存在则改写现有字段:

   归并方式计算:

 

A

 

1

=connect("demo").query("SELECT * FROM CITIES").sort(STATEID)

CITIES表数据内容:

2

=connect("demo").query("SELECT * FROM STATECAPITAL where STATEID<30").keys(STATEID).sort(STATEID)

STATECAPITAL表数据内容:

3

=A1.join@m(STATEID,A2,CAPITAL)

CITIESSTATEID有序,STATECAPITALK有序,使用@m选项,此时可用归并方式计算: