我想加入一些表格。
第一部分详细介绍了学生及其所从事的课程。
接下来,我有一张表格,只保存这些班级中学生的成绩。
如何加入这两个表,以便它只返回第二个表中的7行,但包含第一个表中的其他详细信息,例如studenthouse等?您可以使用类代码链接表,但这会删除11TOK / EE类
在第二个表中,类(11CASIBC)未在第二个表中使用,而11EEIB和11TOKIBC在第二个表中组合成一行(11TOK / EE)在第二个表的原始结果列中,TOK获得了3分,EE得分为5分。他们被组合成3 | 5的字符串。这两个结果的最终结果显示在WeightedResult列中,它是2.00。它将两行合并为一行。
我为这两个表使用了一个Left Outer Join,包括表2中的所有行,并得到以下结果。
它很接近但不包括11TOK / EE类及其结果。这是我使用的SQL。
SELECT b.FileYear,
b.FileSemester,
b.ClassCode,
b.StudentID,
b.StudentHouse,
b.StudentTutor,
a.RawResult,
a.WeightedResult
FROM uStudentMerits a LEFT OUTER JOIN
vStudentClassesAll b
ON a.FileYear = b.FileYear
AND a.FileSemester = b.FileSemester
AND a.ID = b.StudentID
AND a.ClassCode = b.ClassCode
WHERE (b.FileYear = 2015) AND (b.FileSemester = 3) AND (b.StudentID = 43836)
如何将此更改为包含11TOK / EE类作为第7行并填充所有其他字段?注意:因为这两个类是组合在一起的,11TOK / EE的SchoolStaffCode应该始终是11TOKIBC类的老师。希望这是有道理的。任何帮助非常感谢。
答案 0 :(得分:0)
您的加入条件不太正确。您需要执行以下操作,通过在您要过滤的条件下强制加入来获得您所获得的结果:
SELECT b.FileYear,
b.FileSemester,
b.ClassCode,
b.StudentID,
b.StudentHouse,
b.StudentTutor,
a.RawResult,
a.WeightedResult
FROM uStudentMerits AS a
LEFT OUTER JOIN
vStudentClassesAll AS b
ON a.FileYear = b.FileYear
AND a.FileSemester = b.FileSemester
AND a.ID = b.StudentID
AND a.ClassCode = b.ClassCode
AND b.FileYear = 2015
AND b.FileSemester = 3
AND b.StudentID = 43836