练习6:多表关联查询、嵌套子查询
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
表中记录成绩,即不缺考,所以可以根据CId
从sc
表中查出哪些学生获得了该课的学分,从而得到学生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:多表关联查询、嵌套子查询相关推荐
- oracle sql 转换成 hive sql -子查询转关联查询(三).子查询中嵌套子查询
其他sql格式也在更新中,可直接查看俺的这个系列,要是没有你需要的格式,可在评论或私信我,俺现在一天一看 Oracle转换hive 其他sql格式也在更新中,可直接查看俺的这个系列,要是没有你需要的格 ...
- from server sql 拼接统计两个子查询_[SQL SERVER系列]之嵌套子查询和相关子查询
子查询有两种类型,一种是只返回一个单值的子查询,这时它可以用在一个单值可以使用的地方,这时子查询可以看作是一个拥有返回值的函数:另外一种是返回一列值的子查询,这时子查询可以看作是一个在内存中临时存在的 ...
- oracle多表关联查询报表,oracle多表关联查询和子查询
oracle多表关联查询和子查询 一.多表关联查询 例子: sql> create table student1 ( sid varchar(3), sname varchar(6), sage ...
- MySQL数据库基础(多表关联查询、内外全连接、复合条件查询、子查询)
文章目录 一.笛卡尔积查询 二.内.外.全连接查询 三.复合条件查询 四.子查询 五.EXIST判断 本篇文章主要介绍MySQL里的多表关联查询,其中包括了笛卡尔积查询.内连接查询.外连接查询.全连接 ...
- oracle多表嵌套查询使用,oracle sql 多表 嵌套子查询 连接查询, join where exist i...
转:http://hi.baidu.com/delphi_relive/blog/item/d7c0034a49c4932208f7ef21.html in 和 exists也是很好区别的. in 是 ...
- mysql 子表 关联查询语句_MySQL基本SQL语句之单表查询、多表查询和子查询
一.简单查询: 基本语法:SELECT * FROM tb_name;查询全部 SELECT field1,field2 FROM tb_name; 投影 SELECT [DISTINCT] * FR ...
- SQL:多表查询语句(嵌套子查询,多表连接)操作实例
一.SQL Server多表查询,包括连接操作和嵌套子查询 背景知识: 一.连接:分成内连接和外连接,内连接相当于取交集,外连接相当于取并集 二.嵌套子查询:连接操作浪费资源,使用嵌套子查询可以避免连 ...
- oracle sql 多表 嵌套子查询 连接查询, join where exist in 的区别
sql中exits和in的区别 转:http://hi.baidu.com/delphi_relive/blog/item/d7c0034a49c4932208f7ef21.html in 和 exi ...
- oracle左表关联与又表关联,oracle多表关联查询和子查询
oracle多表关联查询和子查询 一.多表关联查询 例子: SQL> create tablestudent1 ( sidvarchar(3), snamevarchar(6), sagenum ...
- mysql 子表 关联查询语句_mysql查询语句 和 多表关联查询 以及 子查询
1.查询一张表: select * from 表名: 2.查询指定字段:select 字段1,字段2,字段3-.from 表名: 3.where条件查询:select 字段1,字段2,字段3 from ...
最新文章
- python模拟高并发_Python基于gevent实现高并发代码实例
- SAP MM 预留单据里的Base date和Requirement date
- C# WinForm获取程序所在路径方法
- OpenCV相机校准camera calibration的实例(附完整代码)
- 使用 Label 类在 XNA 中显示文本,WPXNA(七)
- linux shell 脚本个人规范总结
- 四年级计算机笔试题,四年级计算机考试卷.doc
- Internet Explorer 无法显示网页
- hadoop中的序列化和反序列化
- ARM、DSP、FPGA的技术特点和区别
- 计算机械公差什么软件好,Tolerance机械公差查询工具
- HDOJ HDU Today 2112【最短路Dijkstra+字符串处理】
- 《社会智能与综合集成系统》—第1章1.6节 智慧涌现
- 英特尔芯片组 年代表_英特尔:对不起,但我们的7纳米芯片将延迟到2022年,2023年
- 微信小程序之如何注册微信小程序
- Java基础面试题(史上最全基础面试题,精心整理100家互联网企业面经)
- vue上传excel并展示_(一)vue导入上传excel功能
- 搭建一个简单的SDN网络环境
- python 回溯算法总结
- 一文了解各大数据库查询语言(Gremlin vs Cypher vs nGQL操作篇
热门文章
- AndroidManifest.xml参数
- mysql 免安装版 启动_Windows下配置启动免安装版本mysql
- 数据的逻辑结构(线性结构、非线性结构;集合结构、树状结构、网状结构),数据的存储结构(顺序结构、链式结构、索引结构、散列结构)
- Python根据地名获取经纬度
- python3字典运算_Python3字典与集合
- 第 4 篇、Linux操作基础 | 计算机组成
- java的发展(8-17新特性整理)
- 以华为公司为例的我国业务流程管理实践研究
- win10系统找不到telnet服务器,win10找不到telnet服务怎么办_win10没有telnet服务如何找回...
- 蓬莱与威海的几尊塑像