Select Sname from S,C,T where S.sid=C.sid and C.cid=T.cid and Tname='李老师'; Select Sname from S,C,T where S.sid=C.sid and C.cid=T.cid and Tname!='李老师'; Select Sname from S,C where S.sid=C.sid
select 姓名 From S JOIN C ON S.学号=C.学号 where C.课程号 IN(SELECT 课程号 FROM T WHERE 老师名='李老师')select 姓名 From S JOIN C ON S.学号=C.学号 where C.课程号 NOT IN(SELECT 课程号 FROM T WHERE 老师名='李老师') select 姓名 From S JOIN C ON S.学号=C.学号 where C.课程号 IN(SELECT 课程号 FROM T )
1.SELECT S.姓名 FROM S INNER JOIN C ON S.学号 = C.学号 INNER JOIN T ON C.课程号 = T.课程号 WHERE (T.教师姓名 = 'li')2.SELECT S.姓名 FROM S INNER JOIN C ON S.学号 = C.学号 INNER JOIN T ON C.课程号 = T.课程号 WHERE (T.教师姓名 <> 'li')3.SELECT S.姓名 FROM S INNER JOIN C ON S.学号 = C.学号 INNER JOIN T ON C.课程号 = T.课程号
select 姓名 From S JOIN C ON S.学号=C.学号 where C.课程号 IN(SELECT 课程号 FROM T WHERE 老师名='李老师') 这句可能有点问题,用IN不能实现选择了全部李老师课程的功能
--不简单了 --1 select s.姓名 from s where not exists( select * from t where t.老师名='李老师' and not exists(select * from c where c.学号=s.学号 and t.课程号=c.课程号 )) --2 select s.姓名 from s where not exists(select * from c,t where c.课程号=t.课程号 and c.学号=s.学号 and t.老师名='李老师') --3 select s.姓名 from s where not exists(select * from t where not exists(select *from c where c.学号=s.学号 and c.课程号=t.课程号))
exists挺难掌握的,不会是哪个老师为难你们吧,哈哈
exists是比较难掌握的 试试理解下面的 ----1 select 学号 from (select distinct 课程号,学号 from c where 课程号 in (select t.课程号 from t where t.老师名='李老师')) group by 学号 having count(*)=(select count(*) from t where 老师名='李老师')---3 同理
from S,C,T
where S.sid=C.sid and C.cid=T.cid and Tname='李老师';
Select Sname
from S,C,T
where S.sid=C.sid and C.cid=T.cid and Tname!='李老师';
Select Sname
from S,C
where S.sid=C.sid
select 姓名 From S JOIN C ON S.学号=C.学号 where C.课程号 IN(SELECT 课程号 FROM T )
FROM S INNER JOIN
C ON S.学号 = C.学号 INNER JOIN
T ON C.课程号 = T.课程号
WHERE (T.教师姓名 = 'li')2.SELECT S.姓名
FROM S INNER JOIN
C ON S.学号 = C.学号 INNER JOIN
T ON C.课程号 = T.课程号
WHERE (T.教师姓名 <> 'li')3.SELECT S.姓名
FROM S INNER JOIN
C ON S.学号 = C.学号 INNER JOIN
T ON C.课程号 = T.课程号
这句可能有点问题,用IN不能实现选择了全部李老师课程的功能
--1
select s.姓名 from s where not exists( select * from t where t.老师名='李老师' and not exists(select * from c where c.学号=s.学号 and t.课程号=c.课程号 ))
--2
select s.姓名 from s where not exists(select * from c,t where c.课程号=t.课程号 and c.学号=s.学号 and t.老师名='李老师')
--3
select s.姓名 from s where not exists(select * from t where not exists(select *from c where c.学号=s.学号 and c.课程号=t.课程号))
----1
select 学号 from (select distinct 课程号,学号 from c where 课程号 in (select t.课程号 from t where t.老师名='李老师')) group by 学号 having count(*)=(select count(*) from t where 老师名='李老师')---3
同理