当前位置: 代码迷 >> Oracle认证考试 >> 关于Oracle查询有关问题!
  详细解决方案

关于Oracle查询有关问题!

热度:2652   发布时间:2013-02-26 00:00:00.0
关于Oracle查询问题!急!!
查找出所有与“Mary”修(完全)相同课程的学生信息
有如下几张表:

表名students_courses
STUDENT_ID COURSE_NAM PROF_NAME
---------- ---------- ---------- 
A101       ENGL101    Wilson
A101       MATH101    Blake
A102       HIST102    Crump
A103       HIST102    Milton
A104       BIOL103    Blake
A104       ENGL101    Wilson
A102       MATH101    Blake
A103       MATH101    Blake

表名students
STUDENT_ID STUDENT_NAME
---------- --------------------
A101       John
A102       Mary
A103       kathryn
A104       Steven
A105       William

表名courses
COURSE_NAM COURSE_DESC 
---------- --------------------
ENGL101    English Lit
MATH101    Algebra  
HIST102    Am History
BIOL103    Biology
我水平有限希望各位高手帮助 谢谢!!
------最佳解决方案--------------------------------------------------------
做一次带(+)关联,再统计总数和mary课程数是否相同即可
都有的话,一样
多的话,会多出b.course_NAM是空的记录,用count(*)=count(b.COURSE_NAM)排除
少的话,count(b.COURSE_NAM)不会等于mary的记录数

select a.STUDENT_ID from students_courses a,
(select COURSE_NAM from students_courses where STUDENT_ID='A102') b
where a.COURSE_NAM=b.COURSE_NAM(+)
group by a.STUDENT_ID having count(b.COURSE_NAM)=(select count(*) from students_courses where STUDENT_ID='A102') and count(*)=count(b.COURSE_NAM)

------其他解决方案--------------------------------------------------------
和students表的关联就不帮你实现了,:)
------其他解决方案--------------------------------------------------------
谢谢高手帮助 不过还是不太理解 为什么要用这样的方法做
有没有更加简单的 可以理解的方法?
  相关解决方案