如果满足另一个表中的条件,则显示表中的行

时间:2018-11-25 17:57:04

标签: sql oracle oracle-apex

我有两个表studentsapplications。一个学生有一个ID和一个名字,可以提出很多申请。应用程序表具有ID,作为FK的学生ID和APPLICATION_STATUS。

我想显示所有其其申请的APPLICATION_STATUS中有“ APPLICANT ACCEPTED OFFER”的学生。

我尝试过:

SELECT STUDENTS.FIRST_NAME ||' '||STUDENTS.LAST_NAME "Student Name"
FROM STUDENTS
JOIN APPLICATIONS ON STUDENTS.SRN = APPLICATIONS.SRN
WHERE APPLICATION_STATUS != 'APPLICANT ACCEPTED OFFER';

这是我到目前为止尝试过的方法,但是它没有显示未接受录取的学生,而是显示了所有未被接受的申请。

1 个答案:

答案 0 :(得分:3)

您不需要加入,请使用not exists

 SELECT STUDENTS.FIRST_NAME ||' '||STUDENTS.LAST_NAME "Student Name"
 FROM STUDENTS
 WHERE not exists ( select 1 from 
    APPLICATIONS where STUDENTS.SRN = APPLICATIONS.SRN
    And APPLICATION_STATUS = 'APPLICANT ACCEPTED OFFER');