合并SQL视图

时间:2013-07-22 20:36:12

标签: sql

我作为一名学生工作在大学的IT部门,并且使用SQL的知识非常有限(我不是主修计算机科学/工程)。我会尽力描述我想在这里完成的事情。

我想创建一个包含新学生信息的表格,基本上是:id,名字,姓氏,需要考试(Y / N),Course101部分,讲师。

我的问题是,交换和转学生以及一些一年级学生不必/不注册Course101,因此使用WHERE studnt_course = 'Course101%'将遗漏这些学生。我想在我的视图中选择那些学生并显示他们的Course101部分,教师值为Null。

我正在考虑制作两个观点,一个针对所有新生,一个针对仅有Course101的学生,并且做某种合并/结合但不确定如何实际做到这一点。

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

目前的表格实际上看起来仍然有点模糊,这使得很难给出一个好的建议。

根据您提供给我们的内容,我建议您查看LEFT INNNER JOINNULL会将{{1}}放在两个表格不重叠的位置。

如果您对学习数据库设计感兴趣(而不仅仅是解决这个特定问题),我建议您研究一下正确的数据库设计。

答案 1 :(得分:0)

创建两个查询。一个用于101个学生,一个用于海外/转移(如果为此,您需要弄清楚WHERE子句) 让每个人都满意地工作。

如果除WHERE子句之外的每个东西都相同,那么: 然后获取每个条件,将它们用括号括起来并在其间放置一个OR,将其放入一个查询中 如下所示:

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