【发布时间】:2020-07-18 05:07:56
【问题描述】:
您好,
我正在尝试从给定表中查找每个员工的上级/经理,路径应以“老板->”开头,在经理的每个姓氏之后应出现“->”,路径应以员工经理的姓氏结尾。我正在使用递归 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;
有人能指导我解决问题吗? 谢谢。
【问题讨论】:
-
请向我们展示您期望的结果。
-
正是那个,@GMB。谢谢。
标签: sql postgresql common-table-expression hierarchical-data recursive-query