关于视图和空值的SQL语句

关于视图和空值的SQL语句,sql,view,null,Sql,View,Null,我有以下表格: 学生,包括从1到11的“sid” 其中sid表示“学生id” 和 已注册,包括“cnum”和“sid” 其中cnum表示“课程编号”。 登记表的sid范围仅为1到10,11不在登记表中 现在我想创建一个显示“sid”及其对应的“cnum”的视图 如果我这样写 create view VIEWA as select S1.sid, E1.cnum from STUDENT S1, ENROLLED E1 where S1.sid=E1.sid order by S1.sid; s

我有以下表格: 学生,包括从1到11的“sid” 其中sid表示“学生id” 和 已注册,包括“cnum”和“sid” 其中cnum表示“课程编号”。 登记表的sid范围仅为1到10,11不在登记表中

现在我想创建一个显示“sid”及其对应的“cnum”的视图 如果我这样写

create view VIEWA as
select S1.sid, E1.cnum
from STUDENT S1, ENROLLED E1
where S1.sid=E1.sid
order by S1.sid;
sid   cnum
1      **
1      **
2      **
.
.
.
10     **
结果会是这样

create view VIEWA as
select S1.sid, E1.cnum
from STUDENT S1, ENROLLED E1
where S1.sid=E1.sid
order by S1.sid;
sid   cnum
1      **
1      **
2      **
.
.
.
10     **
您可以看到结果中没有“sid”11。然而,我期望的是这样

sid   cnum
1      **
1      **
2      **
.
.
.
10     **
11    null
我希望显示这个“null”。我知道这个方法可能非常简单,但我们的教授没有教我们。。。。。请帮忙。谢谢

您想要一个:

这将包括
S1
中的所有行(即使不存在匹配项)和
E1
中的匹配行。请尝试:

create view VIEWA as
select S1.sid, E1.cnum
from STUDENT S1 LEFT JOIN ENROLLED E1
on S1.sid=E1.sid
order by S1.sid;

您需要使用外部联接。谷歌。