Sql 如何使用内部联接来显示在第三个表中由其他两列关联的两个匹配列?
我在SQL中有以下表格:Sql 如何使用内部联接来显示在第三个表中由其他两列关联的两个匹配列?,sql,inner-join,Sql,Inner Join,我在SQL中有以下表格: 学生: primary key: student_id name email 课程: primary key: course_id name 注册: primary key: registration_id start_date foreign key: student_id foreign key: course_id 我想要的是:Sql显示一个将学生姓名与课程名称关联的表,如下所示: student name | course
学生:
primary key: student_id
name
email
课程:
primary key: course_id
name
注册:
primary key: registration_id
start_date
foreign key: student_id
foreign key: course_id
我想要的是:Sql显示一个将学生姓名与课程名称关联的表,如下所示:
student name | course name
john | computer science
alex | architecture
daisy | engineering
我听说我需要使用内部联接来完成此操作。确实需要
内部联接
:
SELECT s.name, c.name
FROM students s
JOIN registration r ON r.student_id = s.student_id
JOIN courses c ON c.course_id = r.course_id
这里有一个小的…谢谢,这确实是我需要做的。你甚至做了一个演示!尽管如此,我对sql还是很陌生,所以请您解释一下每一行的功能好吗?从我的理解来看,这看起来像是通过将三个表连接在一起而将它们合并在一个表中,但情况可能并非如此,因为您在两个表中使用了select命令,而不是仅在一个表中使用它。@enricogp您是对的,我正在使用
JOIN
s将三个表合并为一个表。我们需要使用所有三个表来获取您所需的数据,因为需要使用注册
表将学生姓名与他们注册的课程联系起来。因此,第一行简单地说明了我们想要输出的数据(name
来自student
和courses
表),接下来的三行告诉MySQL如何从其他三行中创建更大的表。我使用别名(s
、r
和c
)只是为了缩短查询时间并使其更易于阅读。试玩一下演示(试试选择*
)。在考虑发布之前,请始终用谷歌搜索您的错误消息或您的问题/问题/目标的许多清晰、简洁和准确的措辞,有/没有您的特定字符串/名称,并阅读许多答案。如果你发布一个问题,用一句话作为标题。请参见文本上方的投票箭头(&S)。请在代码问题中给出一个——剪切、粘贴和可运行的代码,加上所需的输出,再加上清晰的说明和解释。这包括您能给出的最少代码,即您显示为OK的代码,由您显示为not OK的代码扩展。(调试基础。)“关联”没有特别的意思。清晰是描述、解决和沟通问题的需要。使用足够的单词、句子和引用部分例子,清楚、完整地说出你的意思。请看,点击谷歌的“stackexchange家庭作业”和鼠标文本上方的投票箭头。你能做些什么?你被困在哪里?现在你只是要求我们用定制的教程重写你的教科书/手册&做你的(家庭)工作&你没有表现出任何研究或其他努力。大量的需求不是关于主题问题的。