我正在尝试解决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
暂无答案!
目前还没有任何答案,快来回答吧!