【发布时间】:2020-01-29 20:24:36
【问题描述】:
我有两个 MySQL 表(table_a 和 table_b)和一个连接表(table_c)。
表结构:
- table_a:
__________________
| table_a: |
|----------------|
| id |
| result_column |
------------------
- table_b:
__________________
| table_b: |
|----------------|
| id |
| name |
------------------
- table_c:
__________________
| table_c: |
|----------------|
| id |
| table_a_id |
| table_b_id |
------------------
我的目标:
我想找到一个查询:
- 遍历每条table_a记录并获取table_a.id值
- 查找 table_c 中具有匹配 table_c.table_a_id 值的任何记录
- 对于 table_c 中的每个匹配记录,获取 table_c.table_b_id 值
- 在table_b中查找与table_b.id值匹配的记录
- 对于 table_b 中的匹配记录,获取 table_b.name 值
- 在table_a中,将每个匹配的名称值连接到对应的table_a.result_column中
示例: 查询前:
_______________________ _________________________________ ________________
| table_a: | | table_c: | | table_b: |
|---------------------| |-------------------------------| |--------------|
| id | result_column | | id | table_a_id | table_b_id | | id | name |
|-----|---------------| |-----|------------|------------| |-----|--------|
| 1 | | | 1 | 1 | 3 | | 1 | Kevin |
| 2 | | | 2 | 1 | 4 | | 2 | Jesse |
| 3 | | | 3 | 2 | 2 | | 3 | Karen |
----------------------- | 4 | 3 | 1 | | 4 | Tim |
| 5 | 3 | 5 | | 5 | Lauren |
--------------------------------- ----------------
查询后:
_______________________ _________________________________ ________________
| table_a: | | table_c: | | table_b: |
|---------------------| |-------------------------------| |--------------|
| id | result_column | | id | table_a_id | table_b_id | | id | name |
|-----|---------------| |-----|------------|------------| |-----|--------|
| 1 | Karen, Tim | | 1 | 1 | 3 | | 1 | Kevin |
| 2 | Jesse | | 2 | 1 | 4 | | 2 | Jesse |
| 3 | Kevin, Lauren | | 3 | 2 | 2 | | 3 | Karen |
----------------------- | 4 | 3 | 1 | | 4 | Tim |
| 5 | 3 | 5 | | 5 | Lauren |
--------------------------------- ----------------
为了清楚起见,我知道这在关系数据表中是非常糟糕的做法。这与人们所能得到的标准化相去甚远。我永远不会设计这样的数据库。我的任务是为业务案例创建一个包含值列表的自定义列纯粹。
【问题讨论】:
标签: mysql sql join concatenation