"SPL 中序表与游标怎么关联?"
SPL 中序表与游标怎么关联?
这两种方式有什么区别?
join 的左侧对象可以是排列也可以是游标,参数里关连的表只能是序表不能是游标。两个游标间的关连需要用 cs.joinx 函数,如果两个表的数据都按关连字段有序可以用 joinx(cs1,….;cs2,…) 函数。
先别急着完成代码,先确定这两个表是什么样关联关系。
SPL 的关联计算和 SQL 区别比较大,概念上的理解可以学习下这篇文章: SPL 中的关联计算 - 内存篇
另外,sortx 那行似乎没什么用。方便的话可以把完整的代码发上来(直接文本贴上来就行)。比如这样:
/111 >database... /222 >cust... >cust
/ 数据库连接
DATABASE_LINK = connect@l(“DB_MYSQL”)/ 从数据库查询数据customers_list = DATABASE_LINK.query(“select * from customers “).keys(customers_id)/ 读取数据文件hostData=file(“C:/Users/86178/Desktop/uxun/hcno.del”:“UTF-8”)if !hostData.exists()/ 使用游标读取数据文件hostCusor=hostData.cursor@m (#1:int,#2:string,#3:string,#4:string,#5:string,#6:date,#7:decimal;,”|”)hostCusor.new(#1:customers_id,#2:sex,#3:name,#4:num,#5:code,#6:date,#7:price)=customers.join(customers_id,A10,name,date,price)=hostCusor.join(customers_id,customers_list,customers_name,age,birthday) 代码是占用的,那序表去关联游标呢?
你现在使用的函数,参数里关联的表只能是序表不能是游标。
列出的代码还是不完整,图片中的 B4 和 B7 代码还是没有看到,猜测 customers 似乎是基于 customers_list 得到的,这俩序表 id 可能都唯一;hostCusor 似乎数据量比较大,但是不确定 id 是否唯一。但还是先不要急着完成代码。
SPL 为外键连接和主键连接提供了不同的函数实现,应用连接运算时,先要明确区分连接的类型,并找到参与的主键。
什么是外键连接、什么又是主键连接,这个概念在 SQL 中是没有的。SQL 也不需要区分这些,平时我们写 SQL 基本只用 join、left join 就行了,至于表的大小(能否装入内存【SPL 中的序表和游标的区分】)SQL 中通常也是不需要考虑的。
由于篇幅较长,概念不适合这里再写一遍了,可以参考 SPL 中的关联计算 - 内存篇 ,更详细的还可以参考 SQL 中的 JOIN(JOIN 简化与提速系列 1) 。
有游标参与的关联计算,可以参考 SPL 中的关联计算 - 外存篇
结合业务含义或者是数据特征,对照 SPL 对关联的分类,应该就不难找到合适的关联函数解决这个问题了。
这两种方式有什么区别?
join 的左侧对象可以是排列也可以是游标,参数里关连的表只能是序表不能是游标。
两个游标间的关连需要用 cs.joinx 函数,如果两个表的数据都按关连字段有序可以用 joinx(cs1,….;cs2,…) 函数。
先别急着完成代码,先确定这两个表是什么样关联关系。
SPL 的关联计算和 SQL 区别比较大,概念上的理解可以学习下这篇文章: SPL 中的关联计算 - 内存篇
另外,sortx 那行似乎没什么用。方便的话可以把完整的代码发上来(直接文本贴上来就行)。
比如这样:
/ 数据库连接
你现在使用的函数,参数里关联的表只能是序表不能是游标。
列出的代码还是不完整,图片中的 B4 和 B7 代码还是没有看到,猜测 customers 似乎是基于 customers_list 得到的,这俩序表 id 可能都唯一;hostCusor 似乎数据量比较大,但是不确定 id 是否唯一。
但还是先不要急着完成代码。
SPL 为外键连接和主键连接提供了不同的函数实现,应用连接运算时,先要明确区分连接的类型,并找到参与的主键。
什么是外键连接、什么又是主键连接,这个概念在 SQL 中是没有的。SQL 也不需要区分这些,平时我们写 SQL 基本只用 join、left join 就行了,至于表的大小(能否装入内存【SPL 中的序表和游标的区分】)SQL 中通常也是不需要考虑的。
由于篇幅较长,概念不适合这里再写一遍了,可以参考 SPL 中的关联计算 - 内存篇 ,更详细的还可以参考 SQL 中的 JOIN(JOIN 简化与提速系列 1) 。
有游标参与的关联计算,可以参考 SPL 中的关联计算 - 外存篇
结合业务含义或者是数据特征,对照 SPL 对关联的分类,应该就不难找到合适的关联函数解决这个问题了。