2012-02-18 5 views
1

다음 테이블이 있는데 ENGLISH 또는 SCIENCE 중 하나를 선택한 학생 (STUD_ID)을 가져 오려고합니다. 그들이 을 모두 영어와 과학으로 가져간 경우 검색하지 마십시오.Oracle 조건 중 하나가 참일 때 레코드를 검색하지만 두 레코드가 모두 참인 경우 레코드를 검색하지 않습니다.

그래서 원하는 출력 STUD_INFO 테이블 내의 중첩 테이블로 된 표가 실제로 테이블 STUD_INFO 피사체 열의 제 2 열 뷰이다 101102104106107

이다.

SELECT groupid, 
     Stud_id, 
     NST.Name 
    FROM STUD_INFO, 
     TABLE(SUBINFO) NST 

누구든지 SQL 쿼리를 도와 줄 수 있습니까? 흥미로운 부분은 내가 Subject = ENGLISH와 Subject = Science를 사용할 때 데이터를 가져 오지 않는다는 것입니다.

groupid Stud_id Subject 
------- ------- -------- 
1 101 ENGLISH 
1 102 MATH 
1 103 ENGLISH 
1 103 SCIENCE 
1 104 ENGLISH 
1 104 MATH 
1 105 PT 
1 105 ENGLISH 
1 105 SCIENCE 
2 106 ENGLISH 
2 107 SCIENCE 
2 108 SCIENCE 
2 108 ENGLISH 
+0

코드를 게시 할 때 탭을 사용하지 마십시오. –

답변

4

Subject = ENGLISH and Subject = SCIENCE 사실 일 수 없다 "제목이 동시에에서 영어와 과학 모두 할 필요가"말한다.

select stud_id from your_view 
where subject in ('ENGLISH', 'SCIENCE') 
group by stud_id 
having count(subject) = 1 

이 기능이 작동합니까?

+0

감사합니다. 예. 작동합니다. – user547453