-1

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

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

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

我正在考虑制作两种视图,一种适用于所有新生,一种适用于只有 Course101 的学生,并进行某种合并/联合,但不知道如何实际做到这一点。

任何帮助将不胜感激!

4

2 回答 2

2

当前表格的实际外观仍然有些模糊,因此很难给出好的建议。

根据您给我们的信息,我建议您研究一下LEFT INNNER JOINNULL两个表不重叠的位置。

如果您有兴趣学习数据库设计(而不仅仅是解决这个特定问题),我建议您研究适当的数据库设计。

于 2013-07-22T21:13:55.473 回答
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
于 2013-10-25T01:28:22.323 回答