2013-04-11 34 views
0

我正在努力为持续和/或毕业的学生提供六年期间的完整学生记录。我做了以下,但不知道我是否得到正确的学生记录。继续和/或毕业的学生的学生记录

SELECT * 
FROM FileYear2006 
INNER JOIN GraduationFile1 
ON FileYear2006.STUDENTID = GraduationFile1.STUDENTID 

我相信上面的查询只给我毕业的学生,​​但我不知道继续的学生。

我有FileYear200-2012,我有三个2009-2010的GraduationFile1,2010-2011的GraduationFile2和2011-2012的GraduationFile3。

续指学生在2006年开始,例如,退学了,在2008年

+0

尝试使用左连接并查找空列。 – highwingers 2013-04-11 03:53:30

+0

不符合标准:实际的毕业/继续活动是否需要在六年期间进行,或者他们在这段时间内只需要成为学生,但他们可以随时毕业,包括有问题的时期? – 2013-04-11 03:55:53

+0

此外,具有年/月后缀的表格和列几乎总是一个可怕的糟糕的设计选择。在这种情况下,年份应该是一个专栏,如果您担心规模/表现,则会将年份设置为表中聚集索引中的第一个字段。 – 2013-04-11 03:57:17

回答

0

回来,你可能有一些状态栏这使无论是通过/丢弃/重新加入/失败的跟踪学生/继续等你可能设置一些代码为他们喜欢列名称将是Student_Status并且它可以具有像下面映射

传递= 0的值,失败= 1,下降= 2,再结合= 3,继续= 4

则可以在上面的查询中加入上面的查询后使用你的上面的查询和对Student_Status的检查,它会给你所需学生的确切结果。

SELECT * 
FROM FileYear2006 
INNER JOIN GraduationFile1 ON FileYear2006.STUDENTID = GraduationFile1.STUDENTID 
WHERE Student_Status = 4 
+0

是内部加入你认为这种情况的正确加入吗? – user2134610 2013-04-11 05:17:29

+0

是的,因为它会根据您指定的student_status值为您提供所需的结果 – 2013-04-14 06:26:03