gpt4 book ai didi

mysql - 如何在MySQL中进行多连接查询?

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

我是 SQL 新手,发现我不太明白何时使用哪些连接。子查询似乎也令人困惑。我设置了下表,并试图获得特定的结果:

`+--------------------------+   +---------------+  +---------------+  +---------------+`
`| Table_A | | Table_B | | Table_C | | Table_D |`
`+--------------------------+ +---------------+ +---------------+ +---------------+`
`| id | f2 | f3 | f4 | d_id | | a_id | c_id | | id | fc | | id | fs |`
`+--------------------------+ +---------------+ +---------------+ +---------------+`

这就是我想要得到的:

`+----------------------------------+`
`| a.f2 | a.f3 | a.f4 | d.fs | c.fc |`
`+----------------------------------+`

我发现可以使用以下查询获取前四列:

Select t1.f2, t1.f3, t1.f4, t2.fs
From Table_A AS t1 INNER JOIN Table_D AS t2
ON t1.d_id = t2.id;

如何从 A.id 前往 C.fc?我不知道如何获取第五列,更不用说与前面的查询结合起来了。这就是我在最后一栏得到的信息:

Select t1.flow_control
FROM Table_D AS t1 INNER JOIN policy t2
ON t1.id = t2.c_id;

最佳答案

这应该可以解决问题:

Select t1.f2, t1.f3, t1.f4, t2.fs, t3.fc
From Table_A AS t1
INNER JOIN Table_D AS t2 ON t1.d_id = t2.id
INNER JOIN Table_B AS jointable ON t1.id = jointable.a_id
INNER JOIN Table_C AS t3 ON jointable.c_id = t3.id;

第一个加入是您最初的加入。第二个是“链接表”,它表示 Table_A 和 Table_C 之间的 HABTM 关系。一旦你加入了它,你就可以进行第三次加入,将其“连接”到表 C,这样你就可以获得“fc”字段。因此,本质上第一个联接仅适用于 Table_D,另外两个联接可让您到达最后一个字段。

如果您需要的话,您可以在单个语句中拥有多个链接到完全不同的表的 JOIN...这就像连接点/遵循关系:)

关于mysql - 如何在MySQL中进行多连接查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5067381/

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