Question07-查询学过"张三"老师授课的同学的信息
查询学过"张三"老师授课的同学的信息
题目分析
-
学过则说明 SC 表中,存在该老师教的 CID 编号;那么如何查询该类的学生信息呢?以多表连接查询的思路,可以参考下面的步骤编写SQL
- ①、在SC表中,根据SID查询数据
- ②、根据①中查出来的数据中的的CID查询TID
- ③、再根据TID查询Teacher表
- ④、判断姓名是否为张三
-
SQL语句如下所示
-
方案1:左外连接
-
SELECT DISTINCT stu.* FROM Student stu LEFT JOIN SC sc ON stu.`SID` = sc.`SID` LEFT JOIN Course cou ON sc.`CID` = cou.`CID` LEFT JOIN Teacher tea ON cou.`TID` = tea.`TID` WHERE tea.`Tname` = "张三";
-
-
方案2:where连接
-
SELECT DISTINCT Student.* FROM Student , SC , Course , Teacher WHERE Student.SID = SC.SID AND SC.CID = Course.CID AND Course.TID = Teacher.TID AND Teacher.Tname = '张三';
-
-
-
这里使用
DISTINCT
的原因是张三老师可能教的是多门课程,那么SC表查询出来的SID也有可能是多个,即会有重复结果 -
运行结果如下所示
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器