0

我有以下表格: STUDENT 包括从 1 到 11 的“sid”,其中 sid 表示“学生 ID”,ENROLLED 包括“cnum”和“sid”,其中 cnum 表示“课程编号”。表 ENROLLED 只有 1 到 10 的 sid,11 不在 ENROLLED 中

现在,如果我这样写,我想创建一个显示“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     **

您可以看到 'sid' 11 不在结果中。但是我期望的是这个

sid   cnum
1      **
1      **
2      **
.
.
.
10     **
11    null

我希望显示这个“null”。我知道这个方法可能很简单,但是我们的教授没有教我们这个......请帮忙。谢谢你!!

4

2 回答 2

0

你想要一个LEFT OUTER JOIN

CREATE VIEW VIEWA 
AS

SELECT S1.sid, E1.cnum
FROM STUDENT S1
LEFT OUTER JOIN ENROLLED E1
    ON S1.sid=E1.sid
ORDER BY S1.sid;

这将包括来自的所有S1(即使没有匹配)和来自的匹配E1

于 2013-09-29T22:26:29.937 回答
0

尝试:

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;
于 2013-09-29T22:27:07.683 回答