–1.学生表 Student(s_id,s_name,s_birth,s_sex) –学生编号,学生姓名, 出生年月,学生性别
–2.课程表 Course(c_id,c_name,t_id) – –课程编号, 课程名称, 教师编号
–3.教师表 Teacher(t_id,t_name) –教师编号,教师姓名
–4.成绩表 Score(s_id,c_id,s_score) –学生编号,课程编号,分数
题目:查询没学过"张三"老师授课的同学的信息
我的做法,四表相连,但我只做得出 学过"张三"老师授课的同学的信息:
SELECT st.*,t.t_name
from student st
JOIN score s on st.s_id=s.s_id
JOIN course c on c.c_id=s.c_id
JOIN teacher t on t.t_id=c.t_id
where t.t_name="张三"
老师文档的答案用的是子查询的嵌套 where 方式,
select st.* from student st where st.s_id not in(
select sc.s_id from score sc where sc.c_id in
(select c.c_id from course c left join teacher t on t.t_id=c.t_id where t.t_name="张三")
)
如果不用子查询,我上面的四表相连, 最后的 where 要怎么改才可以符合题意
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.