描述:
编码字段的键值和指引记录之间切换。
语法:
P.switch(Fi, Ai:x;…)
备注:
Fi在键值和Ai的指引记录之间切换,键值为Ai指引记录的主键,返回切换后的序表。
比如Attendance表里的employeeID字段,里面可能存的是employeeID的码值,也可能存Employee表的对应记录,此时可以用switch()在两者之间切换。
外键有索引表则用索引,没有则建立自行管理。
P |
序表/排列。 |
Fi |
P的键,当只有Fi参数时,Fi存的是码表Ai的记录。通过switch函数切换成码值。 |
Fi, Ai |
当存在参数Ai时,Fi为P的编码字段,存的是码值。通过switch函数切换成Ai的记录。找不到填为null。匹配条件为Fi和Ai的主键相等。 |
Fi, Ai:x |
当存在参数Ai和主键x时,表示从Ai中选出第一条x值和Fi相同的记录,放到字段Fi中,特别地,x为#时直接用序号定位。 |
选项:
(对Fi, Ai 和Fi, Ai:x有效)
@i |
过程中找不到任何F对应值则删除该记录。 |
@d |
与@i相反,只保留找不到的记录,此时不把F填成null。 |
@1 |
P中某条记录的F值在B中找不到,则生成一条B结构的记录,主键值设为F。 |
序表
示例:
|
A |
|
1 |
=demo.query("select * from DEPARTMENT").keys(DEPT) |
|
2 |
=demo.query("select * from EMPLOYEE where EID < 10") |
|
3 |
=demo.query("select * from DEPARTMENT" ).cursor().memory().keys(DEPT) |
返回内表。 |
4 |
>A2.switch(DEPT,A1:DEPT) |
|
5 |
>A2.switch(DEPT,A3:DEPT) |
A3为内表,同上。 |
6 |
>A2.switch(DEPT) |
把A2中"DEPT"字段对应的序表的记录转换为字段值。 |
7 |
>A2.switch@i(DEPT,A1) |
找不到任何DEPT对应值则删除该记录。 |
8 |
>A2.switch@d(DEPT,A1) |
只保留找不到任何DEPT对应值的记录。 |
9 |
>A1.delete(6) |
|
10 |
=A2.switch(DEPT,A2:DEPT) |
|
11 |
=A2.switch@1(DEPT,A2:DEPT) |
|