create table student
(
sid int primary key,
sname varchar2(50),
deptname varchar2(50),
sage int
);
create table course
(
cid int primary key,
cname varchar2(50)
);
create table score(
sid int ,
cid int ,
grade int
);
1. 求查询选修课程编号为’3’的学员姓名和所属单位
select s.sname,s.deptname
from student s,score sc
where s.sid=sc.sid and sc.cid=3
直接使用多表查询或者内连接inner等等查询
2.查询没有选修课程编号为’3’的学员姓名和所属单位
不能把 = 改为<>
原因分析:如果有个学生1号 选了3号课程 再选了2号课程
sc.cid<>3 只排除了他选3号课程 但是这个人选了两个 他还是会被记录下来
(这里也不能用分组group by 英文有两个表)
解决方法:子查询
select sname,deptname
from student
where sid not in(
select sid from score where cid=3
)
总结 :遇到这类问题 查询没有选’3’ 转换先查出3 再not in排除他