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也有可能是多个,即会有重复结果

  • 运行结果如下所示

posted @ 2022-08-10 20:58  OnlyOnYourself-Lzw  阅读(1140)  评论(0编辑  收藏  举报