有下面的数据库
学生:s(s# ,sname,sex,age,d#) 主键s#
教师:prof(p#,pname,age,d# ,Sal)主键p#
课程:c(c# ,cname) 主键c#
选课:sc(s#,c#,score)主键s#,c#
教课:pc(p#,c#,score)主键p#,c#
院系:d(d# ,dname) 主键d#现有下面的查询
查询所学的课程包含了学生S3所学的课程的学生的学号
各位帮帮忙
学生:s(s# ,sname,sex,age,d#) 主键s#
教师:prof(p#,pname,age,d# ,Sal)主键p#
课程:c(c# ,cname) 主键c#
选课:sc(s#,c#,score)主键s#,c#
教课:pc(p#,c#,score)主键p#,c#
院系:d(d# ,dname) 主键d#现有下面的查询
查询所学的课程包含了学生S3所学的课程的学生的学号
各位帮帮忙
FROM S,SC
WHERE S.S#=SC.S#
AND SC.C# IN
(sELECT C.C#
FROM C,S,SC
WHERE S.SNAME='S3'
AND S.S#=SC.S#
AND C.C#=SC.C#)
FROM S,SC
WHERE S.S#=SC.S#
AND SC.C# IN
(sELECT C.C#
FROM C,S,SC
WHERE S.S#='S3'
AND S.S#=SC.S#
AND C.C#=SC.C#)
SQL> run
1 select distinct S.S#
2 FROM S,SC
3 WHERE S.S#=SC.S#
4 AND SC.C# IN
5 (sELECT C.C#
6 FROM C,S,SC
7 WHERE S.s#='S3'
8 AND S.S#=SC.S#
9* AND C.C#=SC.C#)S#
----
S1
S3
aaa
sssSQL> select * from sc;S# C# GRADE
---- ---- ---------
S1 C1
S1 C2 9
S1 C3 33
S3 C1 33
S3 C3 22
aaa C1 33
aaa C2 44
sss C1 34
sss C3 45查询到9记录.
in相当于多个条件的or连接
只要有一个条件为真 那么整个判断就为真了
然后作为条件去查询学生学号,用in包含
---- ---- ---------
S1 C1
S1 C2 9
S1 C3 33
S3 C1 33
S3 C3 22
aaa C1 33
aaa C2 44
sss C1 34
sss C3 45
你想得到什么结果?
S1和SSS?