6. 查询学过「张三」老师授课的同学的信息

关键词分析: 学过、张三老师、同学信息

第一步: 锁定表,我们发现需要查询所有的四张表,各表使用的地方分别在后续步骤中一一说明。

第二步:teacher表查出张三老师对应的TId,即第一步图中的1

SELECT TId FROM teacher WHERE Tname = '张三';

第三步: 根据TId我们便可以从course表中查出张三老师教过哪些课的课程CId,即第一步中的图2注意这里用的in而不是=,因为名字叫张三的老师可能有多个

SELECT CId FROM course WHERE TId IN (SELECT TId FROM teacher WHERE Tname = '张三');

第四步: 我们认为上过课就会在sc表中记录成绩,即不缺考,所以可以根据CIdsc表中查出哪些学生获得了该课的学分,从而得到学生SId,即第一步中的图3

SELECT SId
FROMsc
WHERE cid IN (SELECT CId FROM course WHERE TId IN (SELECT TId FROM teacher WHERE Tname = '张三')) ;

第五步: 有了SId,便可以从student表中查询对应的学生信息了,即第一步中的图4

SELECT *
FROMstudent
WHERE sid IN
(SELECT  SId FROM sc WHERE cid IN (SELECT CId FROM course WHERE TId IN  (SELECT TId  FROM teacher WHERE Tname = '张三'))) ;


看上去很复杂,语句很长,其实就是多套了几个子查询而已,一步一步分析清楚,然后嵌套起来就可以写出来了。

当然,直接用关联查询也是可以的,将四张表的相关信息都放在同一行记录中,然后选出我们想要的字段即可,如下

SELECT st.* FROM student st
JOIN sc ON st.`SId` = sc.`SId`
JOIN course c ON sc.`CId` = c.`CId`
JOIN teacher t ON c.`TId` = t.`TId` AND t.`Tname` = '张三';

练习6:多表关联查询、嵌套子查询相关推荐

  1. oracle sql 转换成 hive sql -子查询转关联查询(三).子查询中嵌套子查询

    其他sql格式也在更新中,可直接查看俺的这个系列,要是没有你需要的格式,可在评论或私信我,俺现在一天一看 Oracle转换hive 其他sql格式也在更新中,可直接查看俺的这个系列,要是没有你需要的格 ...

  2. from server sql 拼接统计两个子查询_[SQL SERVER系列]之嵌套子查询和相关子查询

    子查询有两种类型,一种是只返回一个单值的子查询,这时它可以用在一个单值可以使用的地方,这时子查询可以看作是一个拥有返回值的函数:另外一种是返回一列值的子查询,这时子查询可以看作是一个在内存中临时存在的 ...

  3. oracle多表关联查询报表,oracle多表关联查询和子查询

    oracle多表关联查询和子查询 一.多表关联查询 例子: sql> create table student1 ( sid varchar(3), sname varchar(6), sage ...

  4. MySQL数据库基础(多表关联查询、内外全连接、复合条件查询、子查询)

    文章目录 一.笛卡尔积查询 二.内.外.全连接查询 三.复合条件查询 四.子查询 五.EXIST判断 本篇文章主要介绍MySQL里的多表关联查询,其中包括了笛卡尔积查询.内连接查询.外连接查询.全连接 ...

  5. oracle多表嵌套查询使用,oracle sql 多表 嵌套子查询 连接查询, join where exist i...

    转:http://hi.baidu.com/delphi_relive/blog/item/d7c0034a49c4932208f7ef21.html in 和 exists也是很好区别的. in 是 ...

  6. mysql 子表 关联查询语句_MySQL基本SQL语句之单表查询、多表查询和子查询

    一.简单查询: 基本语法:SELECT * FROM tb_name;查询全部 SELECT field1,field2 FROM tb_name; 投影 SELECT [DISTINCT] * FR ...

  7. SQL:多表查询语句(嵌套子查询,多表连接)操作实例

    一.SQL Server多表查询,包括连接操作和嵌套子查询 背景知识: 一.连接:分成内连接和外连接,内连接相当于取交集,外连接相当于取并集 二.嵌套子查询:连接操作浪费资源,使用嵌套子查询可以避免连 ...

  8. oracle sql 多表 嵌套子查询 连接查询, join where exist in 的区别

    sql中exits和in的区别 转:http://hi.baidu.com/delphi_relive/blog/item/d7c0034a49c4932208f7ef21.html in 和 exi ...

  9. oracle左表关联与又表关联,oracle多表关联查询和子查询

    oracle多表关联查询和子查询 一.多表关联查询 例子: SQL> create tablestudent1 ( sidvarchar(3), snamevarchar(6), sagenum ...

  10. mysql 子表 关联查询语句_mysql查询语句 和 多表关联查询 以及 子查询

    1.查询一张表: select * from 表名: 2.查询指定字段:select 字段1,字段2,字段3-.from 表名: 3.where条件查询:select 字段1,字段2,字段3 from ...

最新文章

  1. python模拟高并发_Python基于gevent实现高并发代码实例
  2. SAP MM 预留单据里的Base date和Requirement date
  3. C# WinForm获取程序所在路径方法
  4. OpenCV相机校准camera calibration的实例(附完整代码)
  5. 使用 Label 类在 XNA 中显示文本,WPXNA(七)
  6. linux shell 脚本个人规范总结
  7. 四年级计算机笔试题,四年级计算机考试卷.doc
  8. Internet Explorer 无法显示网页
  9. hadoop中的序列化和反序列化
  10. ARM、DSP、FPGA的技术特点和区别
  11. 计算机械公差什么软件好,Tolerance机械公差查询工具
  12. HDOJ HDU Today 2112【最短路Dijkstra+字符串处理】
  13. 《社会智能与综合集成系统》—第1章1.6节 智慧涌现
  14. 英特尔芯片组 年代表_英特尔:对不起,但我们的7纳米芯片将延迟到2022年,2023年
  15. 微信小程序之如何注册微信小程序
  16. Java基础面试题(史上最全基础面试题,精心整理100家互联网企业面经)
  17. vue上传excel并展示_(一)vue导入上传excel功能
  18. 搭建一个简单的SDN网络环境
  19. python 回溯算法总结
  20. 一文了解各大数据库查询语言(Gremlin vs Cypher vs nGQL操作篇

热门文章

  1. AndroidManifest.xml参数
  2. mysql 免安装版 启动_Windows下配置启动免安装版本mysql
  3. 数据的逻辑结构(线性结构、非线性结构;集合结构、树状结构、网状结构),数据的存储结构(顺序结构、链式结构、索引结构、散列结构)
  4. Python根据地名获取经纬度
  5. python3字典运算_Python3字典与集合
  6. 第 4 篇、Linux操作基础 | 计算机组成
  7. java的发展(8-17新特性整理)
  8. 以华为公司为例的我国业务流程管理实践研究
  9. win10系统找不到telnet服务器,win10找不到telnet服务怎么办_win10没有telnet服务如何找回...
  10. 蓬莱与威海的几尊塑像