如何找到与使用子查询和设置操作相同的内容

时间:2013-11-02 19:12:55

标签: sql oracle subquery set-operations

我正在努力让那些教导学生的教师与教练一样生活在同一个邮政编码中。

首先,我发现学生和教师使用交叉分享了哪些zipcodes。

SELECT DISTINCT FIRST_NAME,LAST_NAME,PHONE
FROM INSTRUCTOR 
 WHERE ZIP IN (
               SELECT ZIP 
               FROM STUDENT
               INTERSECT
               SELECT ZIP
               FROM INSTRUCTOR

                );

如何找到上述查询中所有学生的section_id?

SELECT SECTION_ID   
FROM STUDENT s
JOIN ENROLLMENT e ON s.STUDENT_ID = e.STUDENT_ID
JOIN SECTION w ON e.SECTION_ID = w.SECTION_ID
JOIN INSTRUCTOR z ON w.INSTRUCTOR_ID = z.INSTRUCTOR_ID;

我不知道如何获得内部查询,如INSTRUCTOR_ID.SECTION_ID = STUDENT_ID SECTION_ID,

现在我在我的查询中只返回住在该邮政编码中的所有教师,但我还需要检查正在接受该邮政编码中的教师教授的部分的学生.... / p>

SELECT DISTINCT FIRST_NAME,LAST_NAME,PHONE
FROM
    (
SELECT FIRST_NAME,LAST_NAME,PHONE,ZIP
FROM STUDENT 

    ) 
Derived
 WHERE ZIP IN (
               SELECT ZIP 
               FROM STUDENT
               INTERSECT
               SELECT ZIP
               FROM INSTRUCTOR

                );

2 个答案:

答案 0 :(得分:1)

SELECT DISTINCT z.FIRST_NAME,z.LAST_NAME,z.PHONE
FROM STUDENT s
JOIN ENROLLMENT e ON s.STUDENT_ID = e.STUDENT_ID
JOIN SECTION w ON e.SECTION_ID = w.SECTION_ID
JOIN INSTRUCTOR z ON w.INSTRUCTOR_ID = z.INSTRUCTOR_ID AND s.ZIP = z.ZIP

答案 1 :(得分:1)

编写一个返回教师及其学生的查询。添加讲师和学生邮政编码。添加一个谓词,使邮政编码必须相同。