表名、字段解释
student(学生表)
sc(成绩表)
course(课程表)
sno(学生学号)
cno(课程号)
sname(学生姓名)
一、分析
要查询出至少有一门课与学号为“s001”的同学所学相同的同学的学号和姓名,需要注意:
1、学号为s001的同学学了哪些课程
2、再根据s001所学的课程查出学了相关课程的学生学号
3、最后根据学号查询出对应学生的姓名
二、实现步骤
1.查询学号为s001的同学学了哪些课程
代码如下(示例):
select sc.cno from sc where sc.sno = 's001'
2.根据s001所学的课程查出学了相关课程的学生学号
代码如下(示例):
select distinct(sc.sno) from sc where sc.cno in
(select sc.cno from sc where sc.sno = 's001') and sno!='s001'
3.根据学号查询出对应学生的姓名
代码如下(示例):
select s.sno,s.sname from student s where s.sno in
(select distinct(sc.sno) from sc where sc.cno in
(select sc.cno from sc where sc.sno = 's001')
and s.sno !='s001'
)
总结
要把题目中的问题分析成一个一个步骤,这样更好理解与处理