Я пытаюсь решить проблему на db.grussell , заявление о проблеме заключается в
Перечислите полные имена и должности текущих сотрудников, которые были на любом изкурсы, в которых учился Роберт Робертс.
мой подход заключается в том, что я написал подзапрос, который выдает значение courseno
, которое взял Роберт Робертс, затем я использую этот courseno
, чтобы получитьсоответствующий empno(employment number)
.Который далее используется в качестве фильтра в других таблицах, который создается путем объединения таблиц jobhistory
и employee
.Но в выводе я не хочу связывать строку с Робертом Робертсом.Однако я знаю, что это происходит, потому что в первом подзапросе 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,
empcourse
EMPNO COURSENO
1 1
2 2