博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
50个查询系列-第五个查询:查询没学过“叶平”老师课的同学的学号、姓名;...
阅读量:6813 次
发布时间:2019-06-26

本文共 1637 字,大约阅读时间需要 5 分钟。

查询没学过“叶平”老师课的同学的学号、姓名:

我们反着来 !不是要查没上过课的同学的名字吗。我们先查上叶平的课的学生。

思路:

1.先去查叶平上的课的课程id:

SELECT t1.courseid kid FROM tblcourse t1,(SELECT  tblteacher.TeaId tid FROM tblteacher WHERE tblteacher.TeaName='叶平') t2  WHERE t1.teaid=t2.tid -- 查出来叶平老师上的课的课程id

结果是:

2;去成绩表中(tblscore)查有这个课程id的学生。

 

SELECT tblscore.StuId    FROM   tblscore,  ( SELECT t1.courseid kid FROM tblcourse t1,(SELECT  tblteacher.TeaId tid FROM tblteacher WHERE tblteacher.TeaName='叶平') t2  WHERE t1.teaid=t2.tid) ykid-- 查出来叶平老师上的课的课程id    WHERE tblscore.CourseId=ykid.kid

结果如下:

我们可以看到上面的结果中有两个1013,这是因为这个学生有两门课都是叶平的课在查询时就查出来了。

我当时就很纠结,怎么才能把重复结果去掉呢。就一个1013好了。

后来我看了答案。答案也是这样的,两个1013

后来我对啊。我们最后查出来要的是不在这个列表里面的学生的id啊,那么这个列表里有几个重复的学生其实是没有关系的。

所以最后的写法就是:

SELECT   *    FROM    tblstudent   WHERE    tblstudent.StuId   NOT IN   (   SELECT tblscore.StuId    FROM   tblscore,  ( SELECT t1.courseid kid FROM tblcourse t1,(SELECT  tblteacher.TeaId tid FROM tblteacher WHERE tblteacher.TeaName='叶平') t2  WHERE t1.teaid=t2.tid) ykid-- 查出来叶平老师上的课的课程id    WHERE tblscore.CourseId=ykid.kid       )

查询结果:

 

 

答案的写法是:

SELECT StuId,StuName FROM tblStudent  WHERE StuId NOT IN   (    SELECT StuID FROM tblScore sc     INNER JOIN tblCourse cu ON sc.CourseId=cu.CourseId     INNER JOIN tblTeacher tc ON cu.TeaId=tc.TeaId          WHERE tc.TeaName='叶平'   )

 

 

扩展:

上面说到了重复记录怎么去除呢:用函数distinct

SELECT   DISTINCT(t11.idd)  FROM       (SELECT tblscore.StuId idd    FROM   tblscore,  ( SELECT t1.courseid kid FROM tblcourse t1,(SELECT  tblteacher.TeaId tid FROM tblteacher WHERE tblteacher.TeaName='叶平') t2  WHERE t1.teaid=t2.tid) ykid-- 查出来叶平老师上的课的课程id    WHERE tblscore.CourseId=ykid.kid )t11

结果:

 

 

 就一个1013了。没有重复记录了。

 

转载地址:http://eczzl.baihongyu.com/

你可能感兴趣的文章
电信领域解决方案
查看>>
.net知识和学习方法系列(二十二)CLR-方法的参数out,ref
查看>>
网络系统传输负载测试
查看>>
一点感悟
查看>>
牛书终于在卓越网上架
查看>>
结合二维码打造安全的手机远程运维管理平台
查看>>
【Silverlight】Bing Maps学习系列(四):使用图钉层(Pushpin layer)及地图图层(MapLayer)...
查看>>
统一沟通-技巧-12-Lync-CX600-3000-5000-配置-internet
查看>>
Linux双机热备解决方案之Heartbeat
查看>>
angerfire宋杨的桌面秀
查看>>
Javascript模板引擎handlebars使用实例及技巧
查看>>
GoldenGate测试(七)
查看>>
动态访问DetailsView内的控件
查看>>
[珠玑之椟]位向量/位图的定义和应用
查看>>
数据对齐
查看>>
linux设置 让oracle10g自启动
查看>>
用JQuery给图片添加鼠标移入移出事件
查看>>
ALTER TABLE & ALTER TYPES
查看>>
Hadoop-调优剖析
查看>>
Mac前端抓包小工具Charles4.0下载
查看>>