首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL联合/连接?

问SQL联合/连接?
EN

Stack Overflow用户
提问于 2012-04-20 05:23:24
回答 3查看 1.5K关注 0票数 0

我正在尝试显示学生的名字、姓氏、SID、主要和次要。以及每个学生的课程、CID和会议时间。不过桥接表把我搞糊涂了。Idk是执行联合连接还是多表连接或其他操作。请帮帮我!

​

​

EN

回答 3

Stack Overflow用户

发布于 2012-04-20 05:34:27

因为这是家庭作业,所以我不会直接回答你的问题,而是给你一些建议。

你真的应该考虑回顾一下UNION和JOINs。

当您希望在同一数据集中返回多个查询时,可以使用UNION。它们必须在每个字段中具有相似的数据类型,并且在每个查询中具有相同数量的字段。那么,对于这个特殊的问题,使用UNION有意义吗?可能不是,因为你想让学生和他们的课程排成一行。

对于这种类型的查询,您需要一个JOIN。在线上有一个非常有用的JOIN的可视化解释。我建议把它放在手边,以便在你学习SQL时对你有所帮助。

A Visual Explanation of SQL Joins

由于您需要学生数据和他们的课程信息,因此获取这两个信息的唯一方法是使用tblRegistration。如果使用此表,则在查询中应该会得到所需的结果。

编辑:

既然有评论者指出第二幅图是UNION而不是JOIN,我不同意这一点,这里就举一个例子来证明这一点。

如上所述,UNION将两个查询组合成一个结果集。这是一个带有UNION演示的sqlfiddle:

Fiddle 1

完全外联接指定在结果集中包括左侧或右侧表中不满足联接条件的行,并将与另一个表对应的输出列设置为NULL。这是对通常由INNER JOIN返回的所有行的补充。这是一个带有FULL OUTER JOIN演示的sqlfiddle:

Fiddle2

正如您所看到的,来自两个查询的产品并不相同,因此图中的FULL OUTER JOIN不是UNION。

票数 3
EN

Stack Overflow用户

发布于 2012-04-20 05:27:57

代码语言:javascript
复制
SELECT *
FROM tblStudent AS s
LEFT OUTER JOIN tblRegistration AS r
  ON s.SID = r.SID
LEFT OUTER JOIN tblCourse AS c
  ON c.CID = r.CID
票数 0
EN

Stack Overflow用户

发布于 2012-04-20 05:32:56

Oracle语法:

代码语言:javascript
复制
SELECT stu.FirstName, 
       stu.LastName, 
       stu.Major, 
       stu.Minor, 
       reg.SID, 
       cou.CID, 
       cou.MeetingTime
FROM 
      tblStudent as stu,
      tblRegistration as reg,
      tblCourse as cou
WHERE
      stu.SID(+) = reg.SID 
      and reg.CID = cou.CID
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10236997

复制
相关文章

相似问题

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