我正在尝试显示学生的名字、姓氏、SID、主要和次要。以及每个学生的课程、CID 和会议时间。不过,桥牌桌让我很困惑。Idk 是否进行联合或多表连接或什么。请帮忙!
3 回答
由于这是家庭作业,因此我不会直接回答您的问题,而是为您提供一些提示。
你真的应该考虑审查UNION
和JOINs
.
当您希望在同一数据集中返回多个查询时,将使用 UNION。它们必须在每个字段中具有相似的数据类型,并且在每个查询中具有相同数量的字段。所以对于这个特定的问题,使用 a 有意义UNION
吗?可能不会,因为您希望学生和他们的课程排成一行。
对于这种类型的查询,您需要一个JOIN
. 在线提供了关于 JOIN 的非常有用的可视化解释。我建议您在学习 SQL 时随身携带它以帮助您。
由于您需要学生数据及其课程信息,因此获得这两者的唯一方法是使用tblRegistration
. 如果您使用此表,在您的查询中您应该得到您正在寻找的结果。
编辑:
由于评论者指出第二张图UNION
不是 a JOIN
,我不同意这里是一个证明它的例子。
UNION
如上所述的 A将两个查询组合成一个结果集。这是一个带有UNION演示的 sqlfiddle:
A FULL OUTER JOIN 指定左表或右表中不满足连接条件的行包含在结果集中,并且对应于另一个表的输出列设置为NULL
。这是除了通常由INNER JOIN
. 这是一个带有FULL OUTER JOIN演示的 sqlfiddle:
如您所见,来自两个查询的产品并不相同,因此FULL OUTER JOIN
图中的 a 不是 a UNION
。
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
甲骨文语法:
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