mysql - 如何对多个表进行 SQL 连接(FK 表有循环的结果共享 ID)
问题描述
我对 SQL 和 Join 语句很陌生,目前我已经脱离了我的联盟,我目前有 6 个数据库表,它们都根据主表 ID 链接到第 7 个主表,但是其他 6 个表中的所有信息是循环的,因此有几个显示结果到一个主表 ID。
是否可以将它们全部加入一个联接语句中,以便我可以得到一个结果,以便主表中的每个人的信息也显示来自其他 6 个链接表的信息
所以基本上当他们都加入了信息后,我希望能够在网页上显示所有信息,所以我想知道我需要做多个 JOIN 语句还是只需要一个更长的语句?
我在下面包含了一些图像,可以直观地解释它。见示例 1 和 2
- 以黄色突出显示的列循环显示许多结果:
2. 这是信息如何循环到数据库中的示例,其中有许多 Race_id 共享到相同的 inf_id:
我不太确定一旦加入它会是什么样子,因为一些信息被循环到许多 Id 中,并且不确定这是否意味着它需要复制列或行?任何帮助将不胜感激。
解决方案
您可以使用左连接,例如用于第一张表的影响者、社交、活动
select i.*, s.follower, s.Social_Medial_URL, a.activity, a.result
from influencer i
left join social s on s.inf_id = i.id
left join activities a on a.inf_id = i.id
您可以使用相同的规则自行为其他表添加左连接
select i.*
, s.follower_count
, s.social_media_url
, a.compete_activity
, a.compete_results
from influencers i
left join inf_other_social s on s.inf_id = i.id
left join inf_compete_activity a on a.inf_id = i.id
LIMIT 0, 25
推荐阅读
- java - Spring Boot - JSON GET请求中的布尔值在数据库中变为空
- postgresql - 如何检查字符串是否包含子字符串?
- node.js - 由于安全性和可用性问题,不推荐使用 Buffer()。请改用 Buffer.alloc()、Buffer.allocUnsafe() 或 Buffer.from() 方法
- flutter - 后台数据更改时如何刷新 ListView.Builder?
- scala - 从 ClassTag 构造 Scala 对象(单例)
- javascript - 如何淡入和淡出音频?
- c# - 元素不会添加到传递给递归函数的列表中
- selenium - 卸载 Chromedriver Windows 10
- deep-learning - 运行 BERT 模型时谷歌 colab 中的 RAM 波动
- android - 如何使用 Kotlin 在 android studio 4.1 中将我的 XML 布局文件实现为 viewmodel()