SQL,将多对多的关联记录按行输出

复制代码
数据库的Primary表和Secondary表有相同的结构,其中W、H、D是主键。Primary表:

|----------------|-----|-----|-----|
| Name | W | H | D |
| Primary item 1 | 100 | 500 | 300 |
| Primary item 2 | 100 | 600 | 300 |
| Primary item 3 | 200 | 500 | 300 |
| Primary item 4 | 100 | 500 | 300 |
| Primary item 5 | 100 | 600 | 300 |
| Primary item 6 | 200 | 500 | 300 |

复制代码
Secondary表:

|------------------|-----|-----|-----|
| Name | W | H | D |
| Secondary item 1 | 100 | 500 | 300 |
| Secondary item 2 | 100 | 600 | 300 |
| Secondary item 3 | 200 | 500 | 300 |
| Secondary item 4 | 100 | 500 | 300 |
| Secondary item 5 | 100 | 600 | 300 |
| Secondary item 6 | 200 | 500 | 300 |

复制代码
要求从两张表中找出符合条件W=100,H=500,D=300的记录,先输出Primay里的一行,再输出相关联的Secondary的每一行。

|------------------|-----|-----|-----|
| Name | W | H | D |
| Primary item 1 | 100 | 500 | 300 |
| Secondary item 1 | 100 | 500 | 300 |
| Secondary item 4 | 100 | 500 | 300 |
| Primary item 4 | 100 | 500 | 300 |
| Secondary item 1 | 100 | 500 | 300 |
| Secondary item 4 | 100 | 500 | 300 |

编写SPL代码:

|---|-------------------------------------------------------------------------------------|
| | A |
| 1 | =sqlServer1.query("select * from Primary where W = 100 and H = 500 and D = 300") |
| 2 | =sqlServer1.query("select * from Secondary where W = 100 and H = 500 and D = 300") |
| 3 | =if(A2,A1.conj(~|A2)) |

A1、A2:执行简单SQL,条件查询。

A3:A2为空时返回空,A2不为空时,循环A1的每条记录 ~,合并 ~ 和 A2,最后再合并循环的结果。

相关推荐
我命由我1234520 分钟前
C++ - 数据容器之 list(创建与初始化、元素访问、容量判断、元素遍历、添加元素、删除元素)
c语言·开发语言·c++·后端·visualstudio·c#·visual studio
ErizJ21 分钟前
Golang | Builder模式
开发语言·golang·建造者模式
qq_3392822326 分钟前
PostgreSQL无法查看表中数据问题排查
数据库·postgresql·oracle
fanTuanye27 分钟前
数据库基本概念:数据库的定义、特点、分类、组成、作用
数据库
掘根30 分钟前
【云备份】配置文件加载模块
开发语言·网络·c++·git
码上飞扬1 小时前
Java大师成长计划之第10天:锁与原子操作
java·开发语言
Always_away1 小时前
数据库系统概论|第五章:数据库完整性—课程笔记1
数据库·笔记·sql·学习
HY小海1 小时前
【数据结构】顺序表
c语言·开发语言·数据结构·学习
南風_入弦2 小时前
Oracle无法正常OPEN(三)
数据库·oracle
Access开发易登软件2 小时前
Access开发:轻松一键将 Access 全库表格导出为 Excel
数据库·oracle·excel·vba·access·access开发