Привет,
Я пытаюсь найти начальников / менеджеров каждого сотрудника из данной таблицы, и путь должен начинаться с 'Boss->' и после Для каждой фамилии менеджера должно появиться '->', а путь должен заканчиваться фамилией менеджера сотрудника. Я использую рекурсивный CTE, но каким-то образом я получаю данные из запроса неправильно. У меня есть следующая таблица результатов:
id | first_name | last_name | superior_id | path |
----+------------+-----------+-------------+-----------------------------------+
1 | Simon | Dixon | null | Boss->Dixon |
2 | Alfredo | Garza | 1 | Boss->Garza->Garza |
3 | Martin | Lopez | 1 | Boss->Lopez->Lopez |
4 | Jorge | Fox | 1 | Boss->F->Fox |
5 | Isaac | Campbell | 2 | Boss->Garza->Campbell->Campbell |
6 | Rosemary | Mcguire | 3 | Boss->Lopez->Mcguire->Mcguire |
7 | Jake | Griffin | 3 | Boss->Lopez->Griff->Griffin |
10 | Thelma | Lindsey | 4 | Boss->F->Lindsey->Lindsey |
8 | Garrett | Grant | 7 | Boss->Lopez->Griff->Grant->Grant |
9 | Deanna | Olson | 5 | Boss->Garza->Campbell->Ols->Olson |
и в результате я получаю приведенную выше таблицу в результате:
WITH RECURSIVE hiearchy AS (
SELECT
id,
first_name,
last_name,
superior_id,
'Boss' AS path
FROM employee
WHERE superior_id IS NULL
UNION
SELECT
employee.id,
employee.first_name,
employee.last_name,
employee.superior_id,
concat(trim(path,'->Dixon'), '->', employee.last_name)
FROM employee join hiearchy
On employee.superior_id=hiearchy.id
)
SELECT
id,
first_name,
last_name,
superior_id,
concat(trim(path,'->Dixon'), '->', last_name) as path
From hiearchy;
Кто-нибудь может направить меня к решению? Спасибо.