首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从其他表中获取每个学生的数据

从其他表中获取每个学生的数据
EN

Stack Overflow用户
提问于 2022-06-12 01:13:30
回答 1查看 26关注 0票数 1

我正试图在数据库中为每个学生获取信息。我知道只有4名学生,所有学生之间有6名入学(即。有些学生报读多门课程)。因此,适当的输出将有6行,都包含必要的学生信息。返回的查询中会有重复的学生。我能够很好地加入学生和入学人数,最终达到了6名学生的总数。但是,一旦我加入到其他表中,以获取有关学生注册的课程的数据,我最终会得到越来越多的行。根据我设置查询格式的方式,我得到7-11行。我只想要对应于注册的6行,仅此而已。为什么会发生这样的事,我该怎么解决呢?

我尝试过不同类型的连接,工会,交叉点,并且已经在这个问题上工作了一个多小时。这就是我目前的情况:

代码语言:javascript
复制
Select s.sid, e.term, c.cno, e.secno, ca.ctitle
from Students as s
join Enrolls as e
on s.sid = e.sid
join Courses as c
on e.secno = c.secno
join Catalogue as ca
on ca.cno = c.cno

问题细节

数据库细节

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-12 01:30:50

看起来,CoursesEnrollment表具有我们所称的“复合键”。我敢打赌,您必须加入ce表,同时使用termsecno列。

您的查询应该如下所示:

代码语言:javascript
复制
SELECT s.sid, e.term, c.cno, e.secno, ca.ctitle
FROM Students AS s
   JOIN Enrolls AS e ON s.sid = e.sid
   JOIN Courses AS c ON e.secno = c.secno AND e.term = c.term
   JOIN Catalogue AS ca ON ca.cno = c.cno

当您有一个复合键并且只使用其中一个列来连接时,您将从外部表中得到不想要的行,从而生成笛卡尔产品结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72588872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档