Я пытаюсь напечатать всех сотрудников, у которых нет подчиненных.Сотрудники без подчиненных
Я думал о структуре данных дерева. Практически большинство сотрудников имеют подчиненных (их называют менеджерами). Единственные без подчиненных - листья (у них нет детей).
Однако я не понимаю, как я могу выбрать листья из этого дерева.
--following prints employees without manager.
SELECT e.employee_id, e.last_name, e.first_name
FROM employees e
WHERE e.employee_id = (SELECT employee_id FROM employees WHERE manager_id IS NULL AND employee_id = e.employee_id);
используйте [connect by previous] (http://docs.oracle.com/cd/B19306_01/server.102/b14200/queries003.htm) и проверьте статус листового узла. [Псевдоконкурс CONNECT_BY_ISLEAF возвращает 1, если текущая строка является листом дерева, определяемым условием CONNECT BY. В противном случае он возвращает 0. Эта информация указывает, может ли данная строка быть дополнительно расширена, чтобы отобразить больше иерархии.] (Http://docs.oracle.com/cd/B12037_01/server.101/b10759/pseudocolumns001.htm#i1007332) – xQbert
Возможный дубликат [получить ВСЕ дети последнего уровня (листья) от узла (иерархические запросы Oracle 11G)] (http://stackoverflow.com/questions/21671568/get-all-last-level-children-leafs-from -a-узловой-hierarhical-запросы-оракул-11g) – xQbert