三道面试题目以及我的确答案不知道对不对....
三个表
S <sno sanme
学号 姓名
c <cno cname cteacher
课号 课名称 老师
SC <sno cno scgrade
学号 课号 成绩
问题:
1,选出没选eric老师的学生姓名
2,学过1号课又有2号课的学生姓名。
3,2门以上不及格的学生姓名和成绩
select S.same from S Where S.sno in ( select SC.sno from C,SC where C.cteacher <> 'eric ' AND SC.cno = C.con )
select S.same from S Where S.sno in ( select SC.sno from SC where SC.cno = '1号 ' AND SC.cno = '2号 ' group sno )
select S.same from S Where S.sno in ( select SC.sno from SC Where SC.scgrade <60 group SC.cno having count(SC.cno)> =2)
------解决方案--------------------1. select S.same from S Where S.sno in ( select SC.sno from C,SC where C.cteacher <> 'eric ' AND SC.cno = C.con )
要求选出没选eric老师的学生姓名, 楼主的写法不正确,举个例子,学生A选择了bree老师的课程和eric老师的课程,按照楼主的sql语句,结果中将会出现学生A的姓名,但是要求中是不能出现的
2. select S.same from S Where S.sno in ( select SC.sno from SC Where SC.scgrade <60 group SC.cno having count(SC.cno)> =2)
要求2门以上不及格的学生姓名和成绩,1)没有选择出成绩;2)group by SC.cno而不是group SC.cno