gpt4 book ai didi

MySQL 将表组合成单个表的语句

转载 作者:行者123 更新时间:2023-11-29 06:04:04 25 4
gpt4 key购买 nike

所以我不太擅长复杂的 MySQL 语句,所以我希望你们能帮助我。

假设我有四个表:MainTable、AttrTable、NameTable 和 ValueTable。

主表如下所示:

| id | title | category |
.........................
| 1 | First | Cat1 |
.........................
| 2 | Second| Cat2 |
.........................
| 3 | Third | Cat3 |

AttrTable 看起来像这样:

| id | mainId | nameId | valueId |
..................................
| 1 | 1 | 1 | 2 |
..................................
| 2 | 1 | 2 | 1 |
..................................
| 3 | 2 | 1 | 3 |
..................................
| 4 | 3 | 3 | 2 |
..................................
| 1 | 3 | 1 | 1 |

NameTable 和 ValueTable 分别如下所示:

| id | title |           | id | title |
.............. ..............
| 1 | foo | | 1 | bar |
.............. ..............
| 2 | john | | 2 | smith |
.............. ..............
| 3 | dink | | 3 | fink |

所以我想编写一个语句,将与 MainTable 的每一行关联的所有数据合并到其自己的行中。例如:我想要一个可以返回如下内容的声明:

| 1 | First | Cat1 | foo | smith | john | bar |
| 2 | Second| Cat2 | foo | fink |
etc...

这可能吗?我什至会满足于这样的事情:

| 1 | First  | Cat1 | foo  | smith |
| 1 | First | Cat1 | john | bar |
| 2 | Second | Cat2 | foo | fink |
etc...

希望这一切都有道理。在此先感谢您的帮助。

最佳答案

听起来你只是想要这个:

select m.id,
m.title,
m.category,
n.title,
v.title
from maintable m
left join attrtable a
on m.id = a.mainid
left join nametable n
on a.nameid = n.id
left join valuetable v
on a.valueid = v.id

参见SQL Fiddle with Demo

关于MySQL 将表组合成单个表的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12376793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com