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也有可能是多个,即会有重复结果 -
运行结果如下所示