(SELECT ename FROM EMP WHERE empno = mgr)
В ПУОС нет записей, соответствующих этому критерию.
Вам нужно самостоятельно присоединиться, чтобы получить это отношение.
SELECT e.ename AS Employee, e.empno, m.ename AS Manager, m.empno
FROM EMP AS e LEFT OUTER JOIN EMP AS m
ON e.mgr =m.empno;
EDIT:
Выбранный вами ответ не будет перечислять вашего президента, потому что это внутреннее соединение . Я думаю, что вы вернетесь, когда обнаружите, что ваши результаты не соответствуют вашим (я подозреваю) домашним заданиям. Вот фактический контрольный пример:
> select * from emp;
empno | ename | job | deptno | mgr
-------+-------+-----------+--------+------
7839 | king | president | 10 |
7698 | blake | manager | 30 | 7839
(2 rows)
> SELECT e.ename employee, e.empno, m.ename manager, m.empno
FROM emp AS e LEFT OUTER JOIN emp AS m
ON e.mgr =m.empno;
employee | empno | manager | empno
----------+-------+---------+-------
king | 7839 | |
blake | 7698 | king | 7839
(2 rows)
Разница в том, что внешнее соединение возвращает все строки. Внутреннее соединение произведет следующее:
> SELECT e.ename, e.empno, m.ename as manager, e.mgr
FROM emp e, emp m
WHERE e.mgr = m.empno;
ename | empno | manager | mgr
-------+-------+---------+------
blake | 7698 | king | 7839
(1 row)