当前位置: 代码迷 >> Oracle管理 >> 新手,初学者级别的新手,求各位指教,万分感激
  详细解决方案

新手,初学者级别的新手,求各位指教,万分感激

热度:123   发布时间:2016-04-24 04:17:21.0
新手,菜鸟级别的新手,求各位指教,万分感激
数据库中有3个表,第一个:Student 学生表 (学号,姓名,性别,年龄,组织部门) 第二个:Course 课程表 (编号,课程名称),第三个:Sc 选课表 (学号,课程编号,成绩)
表结构如下:


有三个语句需要查询
1查询选修了’计算机原理’的学生学号和姓名   2查询’周星驰’同学选修了的课程名字 3 查询选修了5门课程的学生学号和姓名.


由于刚刚自学数据库不久,这三个问题困扰半天了,没查询过三个表的数据。

希望大神们解答。
------解决方案--------------------
join,in,exists都能实现,下面是in的:

select sno,sname from student
where sno in (select sno from sc where cno in (selelect cno from course
where cname='计算机原理'));
select cname from course
where cno in (select cno from sc where sno in (select scno from student
where sname='周星驰'));
select sno,sname from student
where sno in (select sno from sc group by sno having count(cno)>5);

------解决方案--------------------
四楼的解法是正确的,另外不用子查询也可以实现:
第一题:
select sno,sname
from  course,student,sc
where   cname='计算机原理' and  students.sno=sc.sno and sc.cno=course.cno;
第二题:
select  cname
from  course,student,sc
where   sname='周星驰'  and  students.sno=sc.sno and sc.cno=course.cno;
第三题:
select sno,sname 
from student,course
where  students.sno=sc.sno 
group by sno 
having count(cno)=5);



  相关解决方案