P.switch,P.join ,Join 三者的区别应用
在多对 1 关联的时候,采用
P.switch()
不带任何参数,默认是从 P 左连接
@i 过程中找不到任何 F 对应值则删除该记录
@d 与@i相反,只保留找不到的记录
P.join(C:.,T:K,x:F,…; …;…)
不带任何参数,默认是从 P 的左连接
@i,@d 与 switch 的含义一致
在一对多关联的时候,采用
join(Ai:Fi,xj,..;…)
不管是多少个排列之间关联,都是和 A1 中的 x1 相等判断。
不带任务参数,默认是 inner join,产生的结果是 ref 字段
@1, 代表左连接
@i,代表只是对A1集合的过滤,保留找到的记录,与其他集合无关
@d,代表只是对A1集合的过滤,删除找不到的记录。
疑问:
1、在 join 中,默认是 inner join, 与之前的 p.switch,p.join 的默认方式(都是左连接)不一样
为什么 join 默认不采用左连接?
2、在 join 中的 @i 与 p.join 中的@i 的操作结果一样吗?
P.switch 这个函数多用于维表之间的关连,维表数据可以加载到全局变量中做好关连,供所有运算共享使用,通常都是全数据能够关连上所以把左连接当做了默认选项。P.join 沿用了 P.switch 的选项。join(Ai:Fi,xj,..;…) 这个多用于主子表或事实表维表之间的关连,内连接比较常用,所以默认是内连接。
p.join 只能是‘多对一’或‘一对一’连接,光头 join 如果第一个参数的 A 是多的那个,那 join@i 和 p.join@i 结果是一样的。