2013-10-29 60 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

我建議加入拉鍊領域的兩個表。

+0

我會試試這個..謝謝! – Ris