Учитывая следующую структуру таблицы:
CREATE TABLE employee (
id INTEGER GENERATED ALWAYS AS IDENTITY,
supervisor_path LTREE NOT NULL DEFAULT '',
emp_path LTREE GENERATED ALWAYS AS (supervisor_path || id) STORED
-- some additional fields omitted
)
правила следующие:
- У каждого сотрудника ровно один руководитель или нет его.
- Сотрудники без супервизор находится в
NLEVEL(emp_path) = 0
.
Как можно сделать представление, чтобы каждая строка содержала данные о сотрудниках и массив с людьми, которых они контролируют, чтобы элементы в массиве также вкладывались их подчиненных?
В представлении, которое я хотел бы иметь, каждая строка имеет дополнительное поле (supervises
), которое представляет собой массив employee
записей (каждая также имеет это поле ).
Я знаю, что мне, возможно, придется сделать это с помощью рекурсивного запроса, начиная с листьев дерева, но у меня есть некоторые проблемы с пониманием концепции (как это будет работать).
Спасибо за аванс на ваше рассмотрение.