1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 50个查询系列-第七个查询:查询学过“叶平”老师所教的所有课的同学的学号 姓名...

50个查询系列-第七个查询:查询学过“叶平”老师所教的所有课的同学的学号 姓名...

时间:2019-01-17 15:08:04

相关推荐

50个查询系列-第七个查询:查询学过“叶平”老师所教的所有课的同学的学号 姓名...

效果是:

我们查出来叶平的教的课的id是002和016.我们选出的学生同时有这两门课。

如下:

-------------------------------------------------------------------------------------------------------------------------------------------------

具体的做法:

第一步:查找叶平的id

select tblteacher.TeaId from tblteacher where tblteacher.TeaName='叶平'-- 查出叶平老师的id

第二步:查找叶平上的课的id

select tblcourse.CourseId from tblcourse where tblcourse.TeaId=

(

select tblteacher.TeaId from tblteacher where tblteacher.TeaName='叶平'-- 查出叶平老师的id

)-- 叶平老师上的课的课程id

结果:

然后就碰到了问题卡在这里了。

遇到的问题是:

我们要查的是上过这两门课的人(001,016)就是说这个人是这样的:

怎么去查呢?

语句:

select st.StuId,st.StuName from tblstudent st where NOT EXISTS(/*要满足的条件是:1:查叶平的id(两个)2:叶平的两个id(看做一个整体)不能包含在我学生对应的查出来的成绩表中的课程id*/select tblcourse.CourseId from tblcourse where tblcourse.TeaId=(select tblteacher.TeaId from tblteacher where tblteacher.TeaName='叶平'-- 查出叶平老师的id) and tblcourse.CourseId nOT IN(SELECT TBLSCORE.CourseId FROM TBLSCORE WHERE tblscore.StuId=st.StuId))

这里对NOT EXISTS说明一下。

NOT EXISTS(。。。。。)

。。。查出来有结果那么就返回true,但是因为NOT,所以又变成了false,那么select就不返回任何东西。

。。。查出来没有结果那么返回就是false。但是因为NOT.所以又变成了true,那么select 就返回那个查询结果。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。