消除子查询中查询的行?

osh3o9ms  于 2021-06-19  发布在  Mysql
关注(0)|答案(0)|浏览(208)

我正在尝试解决db.grussell的问题
列出参加过罗伯特·罗伯茨所学课程的现任员工的全名和职位。
我的方法是编写一个子查询,它的输出是 courseno 是罗伯特·罗伯茨拍的,我就用这个 courseno 得到相应的 empno(employment number) . 在其他表中进一步用作过滤器,这些表是通过连接生成的 jobhistory 以及 employee table。但在输出中,我不想把这一行与罗伯特·罗伯茨联系起来。但是我知道它即将到来,因为在第一个子查询中 courseno 与罗伯特·罗伯茨有关的 empno 因此罗伯特·罗伯茨也被包括在内。

SELECT jobhistory.position,employee.surname,employee.forenames
FROM jobhistory
JOIN employee ON employee.empno= jobhistory.empno
WHERE employee.empno = ANY(
     SELECT empno
     FROM empcourse
     WHERE courseno = ANY(
         SELECT courseno
         FROM empcourse
         JOIN employee ON employee.empno = empcourse.empno
             AND employee.surname = 'Roberts'
             AND employee.forenames ='Robert'
         )
    )
    AND jobhistory.enddate IS NULL

工作历史

EMPNO   POSITION                    STARTDATE ENDDATE   SALARY
1       Accounts Manager            12-JAN-76           30000
1       Assistant Accounts Manager  11-FEB-72 12-JAN-76 22000

雇员

EMPNO   SURNAME FORENAMES   DOB         ADDRESS    TELNO    DEPNO
1       Jones   Elizabeth   05-JAN-44   26 Agnews  212-337   1
                                        Shamrock,  
2       Smith   Robert      07-FEB-47   18 Marsh   031 732   1
                                        Street,

EMP课程

EMPNO   COURSENO
     1        1
     2        2

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题