7.8 关联查询:多表序号对位

 

将 4 个相关联的表按序号对位连接后,分组计算平均值。
根据相互关联的订单表、支付表、产品信息表和评价表,查询 2014 年未使用分期付款支付的订单中,各类产品的平均评分。

imagepng

使用 join() 函数的 @p 选项,按位置进行连接。

脚本:

A
1 =connect(“demo”)
2 =A1.query(“select * from Order order by ID”)
3 =A1.query(“select * from Payment order by ID”)
4 =A1.query(“select * from Evaluation order by ID”)
5 =A1.query@x(“select * from Product”)
6 =A2.switch(ProductID, A5:ID)
7 =join@p(A6:Order;A3:Payment;A4:Evaluation)
8 =A7.select(year(Order.Date)==2014 && !Payment.Instalments)
9 =A8.groups(Order.ProductID.Category; avg(Evaluation.Score):Score)

A1 连接数据库
A2 查询订单表
A3 查询支付表
A4 查询评价表
A5 查询产品表
A6 使用 switch 函数将产品 ID 转换为对应的产品记录
A7 使用 join@p 函数将三个表按位置进行连接
A8 选出 2014 年未使用分期付款的订单
A9 分组汇总不同产品类别的平均评分

运行结果:

Category Score
Electric appliance 3.98
Fruits 3.86