10. 查询没学过“张三”老师教授的任一门课程的学生姓名
关键词:“ 学生姓名、张三老师“
第一步: 锁定表,需要用到全部的四张表,张三老师在teacher表,老师教授的课程在course表,但course表与学生表没有直接关系,所以需要通过中间成绩表sc,然后关联到学生表student获取学生信息

第二步: 关联课程表和教师表,筛选出张三老师教授的课程Cid
SELECT * FROM course JOIN teacher ON course.`TId` = teacher.`TId` WHERE teacher.`Tname` = '张三';

第三步: 关联成绩表,查询出哪些学生学了张三老师的任意一门课程
SELECT DISTINCT sc.`SId` FROM sc
JOIN course c ON sc.`CId` = c.`CId`
JOIN teacher t ON c.`TId` = t.`TId`
WHERE t.`Tname` = '张三';

第四步:使用not in 获取没有学过张三老师任意一门课程的学生姓名
SELECT student.`Sname` FROM student
WHERE sid NOT IN
(SELECT DISTINCT sc.`SId` FROM sc
JOIN course c ON sc.`CId` = c.`CId`
JOIN teacher t ON c.`TId` = t.`TId`
WHERE t.`Tname` = '张三');

本文介绍如何通过SQL查询找出未学习过特定教师(如张三)所教授的任何一门课程的所有学生姓名。首先关联教师表与课程表确定张三教授的课程,接着找出学习这些课程的学生,最后通过not in操作筛选出未学习过张三课程的学生。
6716

被折叠的 条评论
为什么被折叠?



