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,最后再合并循环的结果。

相关推荐
代码游侠2 分钟前
学习笔记——sqlite3 数据库基础
linux·运维·网络·数据库·笔记·学习·sqlite
黄团团4 分钟前
Oracle内置DBMS_CRYPTO加密包实现AES对称加密和解密
数据库·oracle
DO_Community5 分钟前
加速 JavaScript 开发:DigitalOcean 应用托管现已原生支持 Bun
开发语言·前端·javascript
lly2024065 分钟前
ECharts 响应式
开发语言
这周也會开心8 分钟前
Java面试题-JVM
java·开发语言·jvm
a程序小傲10 分钟前
字节跳动Java面试被问:Fork/Join框架的使用场景
开发语言·python
AC赳赳老秦17 分钟前
使用PbootCMS制作网站如何免费做好防护
前端·数据库·黑客·网站建设·网站制作·防挂马·网站防黑
YJlio17 分钟前
磁盘工具学习笔记(13.7):分析可用空间碎片化程度——为大文件“预留整块地”
数据库·笔记·学习
zwjapple19 分钟前
React + Java 技术面试完整指南
java·开发语言·jvm·react
程序猿202321 分钟前
SQL性能优化-2
数据库·sql