7.21 计算笛卡尔积时采用左连接
两个表相互关联,计算叉积时使用左连接。
根据相互关联的社区人员表和年龄分段表,查询社区居民所处的年龄段。
Community:
ID | Name | Age |
---|---|---|
1 | David | 28 |
2 | Daniel | 15 |
3 | Andrew | 65 |
4 | Rudy |
Age:
Group | Start | End |
---|---|---|
Children | 0 | 15 |
Youth | 16 | 40 |
Middle | 41 | 60 |
Old | 61 | 100 |
使用 xjoin() 函数的 @1 选项计算叉积时使用左连接。
脚本:
A | |
---|---|
1 | =connect(“db”) |
2 | =A1.query(“select * from Community”) |
3 | =A1.query@x(“select * from Age”) |
4 | =xjoin@1(A2:Person; A3:Age, A3.Start<=Person.Age && A3.End>=Person.Age) |
5 | =A4.new(Person.ID:ID, Person.Name:Name, Person.Age:Age,Age.Group:Group) |
A1 连接数据库
A2 查询社区表
A3 查询年龄表
A4 使用xjoin@1 ()函数计算叉积时使用左连接,同时选出年龄在相应的年龄区间的记录
A5 创建序表,返回每个居民所在年龄段
运行结果:
ID | Name | Age | Group |
---|---|---|---|
1 | David | 28 | Youth |
2 | Daniel | 15 | Children |
3 | Andrew | 65 | Old |
4 | Rudy | (null) | (null) |