这是我的表格和插入值:
create table student (
LastName varchar(40),
FirstName varchar(40),
SID number(5),
SSN number(9),
Career varchar(4),
Program varchar(10),
City varchar(40),
Started number(4),
primary key (SID),
unique(SSN)
);
create table enrolled (
StudentID number(5),
CourseID number(4),
Quarter varchar(6),
Year number(4),
primary key (StudentID, CourseID),
foreign key (StudentID) references student(SID),
foreign key (CourseID) references course(CID)
);
insert into student
values ( 'Brennigan', 'Marcus', 90421, 987654321, 'UGRD', 'COMP-GPH', 'Evanston', 2001 );
insert into student
values ( 'Patel', 'Deepa', 14662, null, 'GRD', 'COMP-SCI', 'Evanston', 2003 );
insert into student
values ( 'Snowdon', 'Jonathan', 08871, 123123123, 'GRD', 'INFO-SYS', 'Springfield', 2005 );
insert into student
values ( 'Starck', 'Jason', 19992, 789789789, 'UGRD', 'INFO-SYS', 'Springfield', 2003 );
insert into student
values ( 'Johnson', 'Peter', 32105, 123456789, 'UGRD', 'COMP-SCI', 'Chicago', 2004 );
insert into student
values ( 'Winter', 'Abigail', 11035, 111111111, 'GRD', 'PHD', 'Chicago', 2003 );
insert into student
values ( 'Patel', 'Prakash', 75234, null, 'UGRD', 'COMP-SCI', 'Chicago', 2001 );
insert into student
values ( 'Snowdon', 'Jennifer', 93321, 321321321, 'GRD', 'COMP-SCI', 'Springfield', 2004 );
insert into enrolled
values (11035, 1020, 'Fall', 2005);
insert into enrolled
values (11035, 1092, 'Fall', 2005);
insert into enrolled
values (11035, 8772, 'Spring', 2006);
insert into enrolled
values (75234, 3201, 'Winter', 2006);
insert into enrolled
values (08871, 1092, 'Fall', 2005);
insert into enrolled
values (90421, 8772, 'Spring', 2006);
insert into enrolled
values (90421, 2987, 'Spring', 2006);
我有以下查询:
SELECT e.studentid
FROM enrolled e
FULL OUTER JOIN student s ON e.studentid = s.sid
WHERE ((e.quarter = 'Fall') OR (e.quarter = 'Spring'))
GROUP BY e.studentid
HAVING count(e.studentid) = 1;
但这只会返回
8871
这应该返回
8871
90421
此查询的目标是:列出在秋季学期注册了至少一门课程或在春季学期注册了至少一门课程的学生,但不能同时注册两者。您必须添加几行来测试您的查询。
任何帮助将不胜感激。谢谢。