cs.join()

阅读(895) 标签: 游标, 排列, 外键式连接,

描述:

游标中附加与排列外键式连接动作后返回原游标

语法:

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

备注:

游标cs附加计算,用cs的字段C,匹配T的键KT计算表达式x后作为字段F的值拼接到cs上,返回原游标cs。支持多路游标。

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

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

该函数属于延迟计算函数。

选项:

@i

匹配不上的外键删除整条记录,缺省将填成null

@o(Fi; C:.,T:K,x:F,…; …;…)

原记录作为字段Fi生成新记录。

@d

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

@m

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

参数:

cs

游标/多路游标。

C

游标cs的外键,多个时以冒号隔开。

T

序表/排列。

K

T的键。

x

T的字段表达式。

F

x的字段名。

返回值:

游标

示例:

K省略时:

 

A

 

1

=connect("demo").cursor("SELECT top 10 CID,NAME,POPULATION,STATEID FROM CITIES")

返回游标,数据内容如下:

2

=connect("demo").query("SELECT top 40 * FROM STATECAPITAL").keys(STATEID)

返回以STATEID为键的序表:

3

=A1.join(STATEID,A2,CAPITAL)

游标A1附加计算,将CITIES表与STATECAPITAL表外键式连接,参数K缺省为的STATECAPITAL键,即STATEID,将STATECAPITAL表中的字段CAPITAL拼接到游标中,返回到A1游标。

4

=A1.fetch()

读取游标A1执行A3计算后的数据(数据量较大时建议分批读取):

  K#时:

 

A

 

1

=connect("demo").cursor("SELECT top 10 CID,NAME,POPULATION,STATEID FROM CITIES")

返回游标,数据内容如下:

2

=connect("demo").query("SELECT top 40 * FROM STATECAPITAL").keys(STATEID)

返回以STATEID为键的序表:

3

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

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

4

=A1.fetch()

读取游标A1执行A3计算后的数据:

使用@i选项:

 

A

 

1

=connect("demo").cursor("SELECT top 10 CID,NAME,POPULATION,STATEID FROM CITIES")

返回游标,数据内容如下:

2

=connect("demo").query("SELECT top 40 * FROM STATECAPITAL").keys(STATEID)

返回以STATEID为键的序表:

3

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

游标A1附加计算,使用@i选项,匹配不上的外键删除整条记录,缺省将填成null,返回A1游标。

4

=A1.fetch()

读取游标A1执行A3计算后的数据:

使用@i选项, 参数x:F省略时

 

A

 

1

=connect("demo").cursor("SELECT top 10 CID,NAME,POPULATION,STATEID FROM CITIES")

返回游标,数据内容如下:

2

=connect("demo").query("SELECT top 40 * FROM STATECAPITAL").keys(STATEID)

返回以STATEID为键的序表:

3

=A1.join@i(STATEID,A2)

游标A1附加计算,使用@i选项,当参数x:F省略时,只做针对CITIES表的过滤操作,返回A1游标。

4

=A1.fetch()

读取游标A1执行A3计算后的数据:

使用@d选项:

 

A

 

1

=connect("demo").cursor("SELECT top 10 CID,NAME,POPULATION,STATEID FROM CITIES")

返回游标,数据内容如下:

2

=connect("demo").query("SELECT top 40 * FROM STATECAPITAL").keys(STATEID)

返回以STATEID为键的序表:

3

=A1.join@d(STATEID,A2)

游标A1附加计算,使用@d选项,当参数x:F省略时,删除匹配上外键的整条记录,只做针对CITIES表的过滤操作,返回A1游标。

4

=A1.fetch()

读取游标A1执行A3计算后的数据:

x参数值在T中找不到时:

 

A

 

1

=connect("demo").cursor("SELECT top 10 CID,NAME,POPULATION,STATEID FROM CITIES")

返回游标,数据内容如下:

2

=connect("demo").query("SELECT top 40 * FROM STATECAPITAL").keys(STATEID)

返回以STATEID为键的序表:

3

=A1.join(STATEID,A2,abc)

游标A1附加计算,x参数值在A2中找不到则填为null,返回A1游标。

4

=A1.fetch()

读取游标A1执行A3计算后的数据:

使用@o选项:

 

A

 

1

=connect("demo").cursor("SELECT top 10 CID,NAME,POPULATION,STATEID FROM CITIES")

返回游标,数据内容如下:

2

=connect("demo").query("SELECT top 40 * FROM STATECAPITAL").keys(STATEID)

返回以STATEID为键的序表:

3

=A1.join@o(cities;STATEID,A2,CAPITAL)

游标A1附加计算,使用@o选项,A1原记录作为字段cities生成新记录,返回A1游标。

4

=A1.fetch()

读取游标A1执行A3计算后的数据:

Fcs中已存在则改写现有字段:

 

A

 

1

=connect("demo").cursor("SELECT top 10 CID,NAME,POPULATION,STATEID FROM CITIES")

返回游标,数据内容如下:

2

=connect("demo").query("SELECT top 40 * FROM STATECAPITAL").keys(STATEID)

返回以STATEID为键的序表:

3

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

游标A1附加计算, NAMECITIES表中已存在所以改写现有字段,返回A1游标。

4

=A1.fetch()

读取游标A1执行A3计算后的数据:

 

相关概念:

join()