2013-10-29 2 views
-1

내가하위 쿼리 및 INTERSECT

은 처음에는 학생과 교사가 같은 ZIP

이 우편을 선택 강사로 같은 우편 번호에 살고있는 학생들을 가르치는 강사의 이름, 우편 번호 및 전화 번호를 선택하려합니다
SELECT ZIP 
FROM STUDENT 
INTERSECT 
SELECT ZIP 
FROM INSTRUCTOR; 

그리고 내가

ZIP 
----- 
10025 

그래서 어떻게 지금은 이미 선택한 ZIP에서 이름, 성 및 전화를 선택합니까 원하는 걸주는? 어떻게 그들을 결합 할 수 있습니까?

SELECT FIRST_NAME,LAST_NAME,PHONE 
FROM INSTRUCTOR w, STUDENT s 
WHERE w.STUDENT_ID = w.STUDENT_ID 
GROUP BY FIRST_NAME,LAST_NAME,PHONE 
HAVING COUNT(*) = 
(SELECT ZIP 
FROM 
(SELECT ZIP 
FROM STUDENT 
INTERSECT 
SELECT ZIP 
FROM INSTRUCTOR)); 
+0

는 일부 샘플 데이터를 제공하고 결과를 예상 할 수 충분 가입? 올바른 결과가 우편이라고 말하면서도 강사 목록 (전체/모든 학생이 같은 우편 번호에 속해 있음) 또는 강사/학생 쌍 (같은 우편 번호에 있음) 중 하나를 생각 중입니다. 샘플 데이터와 결과는 일반적으로 결과를 설명하는 데 가장 모호한 방식입니다. –

답변

1

강사 세부 정보 및 학생 세부 정보를 선택 하시겠습니까? 그렇다면 것은 시도

SELECT FIRST_NAME,LAST_NAME,PHONE 
FROM 
    (
    SELECT FIRST_NAME,LAST_NAME,PHONE,ZIP 
    FROM INSTRUCTOR 
    UNION ALL 
    SELECT FIRST_NAME,LAST_NAME,PHONE ,ZIP 
    FROM STUDENT 
    ) 
Derived 
WHERE ZIP IN (SELECT ZIP FROM STUDENT 
       INTERSECT 
       SELECT ZIP 
       FROM INSTRUCTOR) 

업데이트 : 당신은 강사를 필요로하는 경우, 단순한는

SELECT FIRST_NAME,LAST_NAME,PHONE,ZIP 
FROM INSTRUCTOR INNER JOIN STUDENT ON INSTRUCTOR.ZIP = STUDENT.ZIP 
+0

'AS derived '는 잘못된 구문입니다 (Oracle에서 테이블의 별칭을 지정할 때'AS '를 사용하지 마십시오). –

+0

강사 정보 만 – Ris

+0

감사합니다 @PrzemyslawKruglej, 나는 TSQL 구문을 사용하고 있었고, 나의 초기 대답을 수정했습니다 – JamieA

0

zip 필드에 두 개의 테이블을 결합하는 것이 좋습니다.

+0

나는 이것을 시도 할 것이다.. 감사합니다! – Ris