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

使用 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 |
| … | … |
