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

相关推荐
XLYcmy1 分钟前
智能体大赛 技术架构 数据根基层
数据库·ai·llm·api·agent·幻觉·万方
瓦特what?3 分钟前
插 入 排 序
开发语言·c++
014-code8 分钟前
MySQL 事务隔离级别
java·数据库·mysql
Je1lyfish16 分钟前
CMU15-445 (2026 Spring) Project#1 - Buffer Pool Manager
linux·数据库·c++·后端·链表·课程设计·数据库架构
m0_5312371722 分钟前
C语言-初始化赋值,函数,变量的作用域与生命周期
c语言·开发语言
Re.不晚26 分钟前
Redis——哨兵机制
数据库·redis·bootstrap
张3蜂27 分钟前
Python venv 详解:为什么要用、怎么用、怎么用好
开发语言·python
zyeyeye31 分钟前
自定义类型:结构体
c语言·开发语言·数据结构·c++·算法
火龙果研究院39 分钟前
在CentOS上安装Python 3.13需要从源码编译
开发语言·python·centos
代码星辰40 分钟前
MySQL 面试题——深度分页优化
数据库·mysql·覆盖索引·深度分页