2013-07-22 65 views
-1

我工作的一所大学作为学生工作者的IT部门,并在使用SQL非常有限的知识(我不是在计算机科学/工程专业)。我会尽我所能来描述我想在这里完成的事情。合并SQL视图

我希望创建一个包括有关新的学生,基本信息表:ID,姓,名,需要考试(Y/N),Course101部分,讲师。

我的问题是,交流和转让的学生,还有一些一年级学生就不用/没有报名参加Course101,所以使用WHERE studnt_course = 'Course101%'将漏下的学生。我想按照我的观点挑选那些学生,并显示他们的课程101部分,教师值为空。

我正在考虑做两个意见,一个为所有新的学生和一个学生只有Course101,并做一些并购/联盟的,但不知道如何真正做到这一点。

任何帮助将不胜感激!

+0

不知道该怎么办呢?提出意见或将它们与'工会'结合? – GolezTrol

+1

请[编辑](http://stackoverflow.com/posts/17796909/edit)你的问题,并添加表格架构,样本数据和所需的输出来说明你的问题。 – peterm

+0

我很好用任何方法。只是想弄清算法。再次,我想在这里完成的事情是挑选没有Course101的学生,并将他们的教师和部分值显示为Null。 – user2608238

回答

2

它仍然是一个有点模糊当前有哪些表实际上看起来像这使得它很难给出一个很好的建议。

根据您给我们的建议,我建议您查看LEFT INNNER JOIN,这样可以将NULL放在两张表不重叠的位置。

如果你有兴趣学习数据库设计(而不是仅仅解决这方面的问题),我会建议寻找到合适的数据库设计。

+0

感谢您的建议,JBarberU!由于数据和表格的结构,我终于发现全外联接在这种情况下会起作用。 – user2608238

0

创建两个查询。一个为101名学生,另一名为海外/转学(如果需要的话,你需要制定WHERE子句) 让每个人都满意。

如果每一件事情距WHERE子句相同,则: 然后抓住每一个条件,括号内包装他们,把一个或两者之间,它放入一个查询 因此,像:

SELECT Name, Id,ShoeSize 
FROM Students 
WHERE (studnt_course = 'Course101%') OR (transferred = 1 OR is_exchange = 1) 

即,因此,所有的学生WHERE <this> OR <that>是真的

其他明智的(例如,使用不同势表): 确保在你的SELECT语句,你是选择相同的列名 如果一个列有相同的信息,但请拨打以下不同的东西:

<columnName> AS <NameYouWantToCallIt> 

确保列名的顺序相同。 然后在两个查询之间放置单词UNION。

这将结合两个查询的结果(并删除重复项)。

SELECT Name, Id, ShoeSize 
FROM Students 
WHERE studnt_course = 'Course101%' 

UNION 

SELECT Name, Id, FootSize AS ShoeSize 
FROM exchangeStudents 
WHERE transferred = 1 OR is_exchange = 1