gpt4 book ai didi

mysql - SQL查询从多个表中获取结果

转载 作者:行者123 更新时间:2023-11-29 22:00:50 26 4
gpt4 key购买 nike

我的两个表 t1 和 t2 之间存在多对多关系。我试图从属于 t2 的 t1 中获取结果,我可以通过简单的联接来获取,但我也想获取与 t1 行有关系的所有 t2 记录。

我会将我正在寻找的结果翻译为 json 以便更好地理解:

[
{
"name": "t1.1",
"t2s": [
{
"name": "t2.1"
},
{
"name": "t2.2"
}
]
},
{
"name": "t1.2",
"t2s": [
{
"name": "t2.1"
},
{
"name": "t2.3"
}
]
}
]

更新:这是我当前的查询,它返回关系的数据,但我也希望获取与 t1 有关系的所有 t2 记录。

select t1.name,t2.name 
from t1
join t1_t2 as t1t2
on t1t2.id=t1.id
where t1t2.id = '10'

db structure

最佳答案

我希望我明白目标就在这里。如果您尝试为某些 t1_t2 行提取 t1.namet2.name,以下查询将执行此操作:

SELECT t1.name, t2.name
FROM t1_t2
JOIN t1
on t1_t2.t1_id = t1.id
JOIN t2
on t1_t2.t2_id = t2.id
WHERE t1_t2.id = 10

这里我只是加入 t1,其中 id 相等,然后对 t2 执行相同的操作。如果这就是您所需要的,那就非常简单了。

如果另一方面,您希望所有 t2.namet1 关联,则只需更改 WHERE:

WHERE t1.id = 10

这将为您提供与 t1 行关联的所有行。

我可以建议一个不同的、更简单的表结构吗:

t1:
id
t1_t2_id
name
t2:
id
t1_t2_id
name
t1_t2:
id

看,这里我让两个表都指向多对多表。然后你可以完全跳过 t1_t2 表并说:

SELECT t2.name FROM t2
JOIN t1
ON t1.t1_t2_id = t2.t1_t2_id
WHERE t1.id = 10

关于mysql - SQL查询从多个表中获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32669618/

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