MYSQL 多表连接

Posted

技术标签:

【中文标题】MYSQL 多表连接【英文标题】:MYSQL Multiple Tables Join 【发布时间】:2021-12-25 12:25:07 【问题描述】:

我的项目中有多个表,我想从一个视频表中数出一些东西,首先让我附上图片表...

上面是table_std

上面是表格主题

上面是table_chapter

以上是表格视频

现在我想为 tbvid 中的视频时间总和提供资金,并希望它对抗 stdid,如下所示

所以这里首先从标准表开始,下一个表子表依赖于 std 表,然后 chap 表依赖于子表,vid 表依赖于 chap 表。

对我来说,如果有人能帮我解决这个问题,sql 查询将非常困难,我们将不胜感激!

【问题讨论】:

不要从不从不发布表格图片。将CREATEINSERT 语句发布为文本 您有一个长期存在的缩写问题。 “vidtime”而不是“video_time”,“subdesc”而不是“subject_description”。我仍然无法弄清楚“std”代表什么。是“标准”还是“学生”?谁知道?你可能认为这种缩写让你的代码看起来很酷,但最终你只会让它难以阅读。 @NisargJani:图像不是(很容易)消耗的,因此人们不必要地难以建立测试环境来解决你的问题。让这些人尽可能轻松,并使用适当的 DDL 和 DML——帮助那些帮助你的人——不要使用图像! Nisarg Jani as @sticky 在发布图像而不是文本之前提到的位会使人们浪费大量时间为您的问题做示例和测试。在我看来,回答一个没有提供最小努力至少使问题更容易在测试环境中重现的问题是毫无意义的。仅创建表格可能需要 20 多分钟。复制粘贴只需几秒钟。帮助我们为您提供帮助。 示例还需要易于理解和使用。此外,“这只是一个例子”和“我稍后会改正”是我们在这里听到的一些最常见的借口。很抱歉对你这么严厉,我们的意思是好的,我希望你能理解。我的建议是:删除这个问题,然后重新开始,这次没有图像,并尽自己最大的努力解决问题。 【参考方案1】:

参考自 SUM(subquery) in mysql

SELECT `std`.*,
    (SELECT SUM(`video`.`vidtime`) FROM `video` WHERE `vidid` = `std`.`stdid`) AS `sum_vidtime`
FROM `table_std` AS `std` 

如果您只想使用这些列:stdidvidtime(在我的情况下为sum_vidtime),则无需连接多个表。使用子查询。

正如大家所说,请不要以图片为例。

【讨论】:

好的,我试过了,但在我的情况下,有 4 张桌子,每张桌子都依赖于另一张桌子,对我来说它不起作用! 在这种情况下,请像每个人所说的那样,发布 CREATEINSERT 示例代码。或者删除这个问题并重新开始 text 而不是 image 正如@KIKO 评论的那样。

以上是关于MYSQL 多表连接的主要内容,如果未能解决你的问题,请参考以下文章

MySQL数据库多表查询

TypeORM 无关联关系的mysql多表连接查询

MySQL数据库多表查询

MySQL多表连接查询

MySQL学习16:多表连接

Mysql-多表连接的操作和用法