描述:
游标与排列外键式连接
语法:
cs.join(C:.,T:K,x:F,…; …;…)
备注:
用游标cs中的字段C,…匹配T的键找到相应记录,在cs上拼接T中的表达式x作为字段F添加到cs上,返回原游标。K只能省略或是#,K省略时用T的键,用#时表示用序号,支持多路游标。
选项:
|
@i |
匹配不上的外键删除整条记录,缺省将填成null |
|
@o(F;…) |
原记录整个作为字段F生成新记录,x可以是~,表示T的整条记录 |
|
@d |
当参数x:F省略时,删除匹配上外键的整条记录,只做针对cs的过滤操作。 |
参数:
|
cs |
游标/多路游标 |
|
C |
游标cs的外键,多个时以冒号隔开 |
|
T |
序表/排列/集群内表 |
|
K |
T的键 |
|
x |
T的字段表达式 |
|
F |
表达式x的字段名 |
返回值:
原游标cs
示例:
|
|
A |
|
|
1 |
=demo.cursor("select EID,NAME,DEPT,SALARY from EMPLOYEE where EID<10 order by EID" ) |
返回取数游标,数据内容如下:
|
|
2 |
=demo.query("select * from PERFORMANCE order by EMPLOYEEID").keys(EMPLOYEEID) |
返回序表:
|
|
3 |
=A1.join(EID,A2, BONUS+1:SALARY1) |
常规连接,匹配不上的外键的用null |
|
4 |
=A3.fetch() |
|
|
5 |
=demo.cursor("select EID,NAME,DEPT,SALARY from EMPLOYEE where EID<10 order by EID" ) |
同A1 |
|
6 |
=demo.query("select * from PERFORMANCE order by EMPLOYEEID").keys(EMPLOYEEID) |
同A2 |
|
7 |
=A5.join@i(EID,A6, BONUS+1:SALARY1) |
匹配不上的外键删除整条记录 |
|
8 |
=A7.fetch() |
|
|
9 |
=demo.cursor("select EID,NAME,DEPT,SALARY from EMPLOYEE where EID<10 order by EID" ) |
同A1 |
|
10 |
=demo.query("select * from PERFORMANCE order by EMPLOYEEID").keys(EMPLOYEEID) |
同A2 |
|
11 |
=A9.join@i(EID,A10: #1, #3+1:SALARY1) |
#1表示第1个字段,#3表示第3个字段 |
|
12 |
=A11.fetch() |
结果同A8 |
|
13 |
=demo.cursor("select EID,NAME,DEPT,SALARY from EMPLOYEE where EID<10 order by EID" ) |
同A1 |
|
14 |
=demo.query("select * from PERFORMANCE order by EMPLOYEEID").keys(EMPLOYEEID) |
同A2 |
|
15 |
=A13.join@o(F1;EID,A14,BONUS+1:SALARY1) |
原记录整个作为字段F1 |
|
16 |
=A15.fetch() |
|
|
17 |
=demo.cursor("select EID,NAME,DEPT,SALARY from EMPLOYEE where EID<10 order by EID" ) |
同A1 |
|
18 |
=demo.query("select * from PERFORMANCE order by EMPLOYEEID").keys(EMPLOYEEID) |
同A2 |
|
19 |
=A17.join@o(F1;EID,A18,~:SALARY1) |
使用~代替x参数 |
|
20 |
=A19.fetch() |
|
|
21 |
=file("D:\\test7.ctx") |
|
|
22 |
=A21.create(#EMPLOYEEID,EVALUATION,BONUS;EMPLOYEEID |
创建组表 |
|
23 |
=A22.attach(table3,#EMPLOYEEID,EVALUATION,BONUS) |
增加附表 |
|
24 |
=demo.cursor("select * from PERFORMANCE") |
附加记录 |
|
25 |
=A23.append(A24) |
附加记录 |
|
26 |
=demo.cursor("select EID,NAME,DEPT,SALARY from EMPLOYEE where EID<10 order by EID" ) |
|
|
27 |
=demo.query("select * from PERFORMANCE order by EMPLOYEEID") |
|
|
28 |
=file@n("D:/test.ctx","169.254.121.62:8281") |
打开复写文件 |
|
29 |
=A28.create() |
创建复写类型集群组表 |
|
30 |
=A29.attach(table3) |
取出集群附表table3 |
|
31 |
=A30.memory() |
生成集群内表 |
|
32 |
=A31.cursor() |
|
|
33 |
=A32.join(EID,A27:EMPLOYEEID, BONUS+1:SALARY1).fetch()
|
返回游标,结果如下:
|
相关概念: