0

我正在尝试显示学生的名字、姓氏、SID、主要和次要。以及每个学生的课程、CID 和会议时间。不过,桥牌桌让我很困惑。Idk 是否进行联合或多表连接或什么。请帮忙!

在此处输入图像描述

4

3 回答 3

3

由于这是家庭作业,因此我不会直接回答您的问题,而是为您提供一些提示。

你真的应该考虑审查UNIONJOINs.

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

对于这种类型的查询,您需要一个JOIN. 在线提供了关于 JOIN 的非常有用的可视化解释。我建议您在学习 SQL 时随身携带它以帮助您。

SQL 连接的可视化解释

由于您需要学生数据及其课程信息,因此获得这两者的唯一方法是使用tblRegistration. 如果您使用此表,在您的查询中您应该得到您正在寻找的结果。

编辑:

由于评论者指出第二张图UNION不是 a JOIN,我不同意这里是一个证明它的例子。

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

小提琴 1

A FULL OUTER JOIN 指定左表或右表中不满足连接条件的行包含在结果集中,并且对应于另一个表的输出列设置为NULL。这是除了通常由INNER JOIN. 这是一个带有FULL OUTER JOIN演示的 sqlfiddle:

小提琴2

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

于 2012-04-19T21:34:26.790 回答
0
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
于 2012-04-19T21:27:56.823 回答
0

甲骨文语法:

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
于 2012-04-19T21:32:56.300 回答