此问题已存在:
How to join three tables or more than three tables if many ID is pointing from one table to another table?
6天前关闭。
我对连接感到困惑,假设我有三个表,分别是student表、course表和teacher表
“学生”表
std_Id std_Name course_Id teacher_Id
1 Amit 3 1
2 Yogesh 1 1
3 Pravin 3 2
4 Nilay 1 3
5 Abhijit 2 3
“课程”表
course_Id course_Name std_Id teacher_Id
1 JAVA 1 3
2 C# 1 3
3 C++ 3 1
4 SAP 2 2
5 PYTHON 2 1
6 JAVASCRIPT 3 2
“教师”表
teacher_Id teacher_Name std_Id course_Id
1 Roy 1 1
2 John 2 1
3 Ben 1 3
4 Renu 2 3
5 Ramesh 1 3
这里我没有给出任何引用键,所以如何连接三个表我在这里给出查询
select Std_Name,Course_Name,Teacher_Name
from Student
inner join Course
on 𝐒𝐭𝐮𝐝𝐞𝐧𝐭.𝐒𝐭𝐝_𝐈𝐝=𝐂𝐨𝐮𝐫𝐬𝐞.𝐂𝐨𝐮𝐫𝐬𝐞_𝐈𝐝
or 𝐒𝐭𝐮𝐝𝐞𝐧𝐭.𝐂𝐨𝐮𝐫𝐬𝐞_𝐈𝐝=𝐂𝐨𝐮𝐫𝐬𝐞.𝐒𝐭𝐝_𝐈𝐝
or 𝐒𝐭𝐮𝐝𝐞𝐧𝐭.𝐂𝐨𝐮𝐫𝐬𝐞_𝐈𝐝=𝐂𝐨𝐮𝐫𝐬𝐞.𝐂𝐨𝐮𝐫𝐬𝐞_𝐈𝐝
or 𝐒𝐭𝐮𝐝𝐞𝐧𝐭.𝐒𝐭𝐝_𝐈𝐝=𝐂𝐨𝐮𝐫𝐬𝐞.𝐒𝐭𝐝_𝐈𝐝
inner join Teacher
on 𝐂𝐨𝐮𝐫𝐬𝐞.𝐂𝐨𝐮𝐫𝐬𝐞_𝐈𝐝=𝐓𝐞𝐚𝐜𝐡𝐞𝐫.𝐓𝐞𝐚𝐜𝐡𝐞𝐫_𝐈𝐝
or 𝐂𝐨𝐮𝐫𝐬𝐞.𝐓𝐞𝐚𝐜𝐡𝐞𝐫_𝐈𝐝=𝐓𝐞𝐚𝐜𝐡𝐞𝐫.𝐂𝐨𝐮𝐫𝐬𝐞_𝐈𝐝
or 𝐂𝐨𝐮𝐫𝐬𝐞.𝐓𝐞𝐚𝐜𝐡𝐞𝐫_𝐈𝐝=𝐓𝐞𝐚𝐜𝐡𝐞𝐫.𝐂𝐨𝐮𝐫𝐬𝐞_𝐈𝐝
or 𝐂𝐨𝐮𝐫𝐬𝐞.𝐓𝐞𝐚𝐜𝐡𝐞𝐫_𝐈𝐝=𝐓𝐞𝐚𝐜𝐡𝐞𝐫.𝐓𝐞𝐚𝐜𝐡𝐞𝐫_𝐈𝐝
如您所见,这里有三个表,现在我想查看拥有课程的学生和teacher_id,当然,我希望向拥有课程的学生显示此处应使用哪一列,因为在student表中,我们也有std_id和course_id,因此应使用哪一列与course表std_连接id或course_id,在course表中,我们还有course_id和std_id,因此此处应使用哪个列与student表连接,并且我们还希望显示teachers,那么student表也有teacher_id,course表也有teacher_id,因此此处应使用哪个表的列来显示teacher?
那么,这里应该使用什么条件来连接三个表呢,因为在这里,你可以看到很多id,从一个表指向另一个表,这就是为什么我不能理解这个,你知道如何连接这三个表,并得到输出,请帮助我,我怎么能解决这个问题,请让我知道,伙计们,请给予我答案,我上面已经提到了我想在输出中显示的内容。
1条答案
按热度按时间e4eetjau1#
您的问题可以使用一些格式,但据我所知,您希望连接3个表,这应该看起来像这样:
您应该开始使用别名(
from Student t
),因为它可以使连接和引用表变得更容易、更快。编辑:
可以这样想上面的查询:
Student
代表一个(或更多)Courses
,每门课程都有一个Teacher
来教授它。Student
和Course
之间的共同点是Course_id
,这就是为什么我们像s.Course_id = c.Course_id
这样将它连接起来。现在,我们知道每个Course
都有一个Teacher
来教导它,所以它们之间的公共项也是Course_id
,因此连接如下inner join t.Course_id = c.Course_id
。