查找出所有与“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表的关联就不帮你实现了,:)
------其他解决方案--------------------------------------------------------
谢谢高手帮助 不过还是不太理解 为什么要用这样的方法做
有没有更加简单的 可以理解的方法?