我在树结构中有一个叶子节点,并且我需要一个Postgres查询来递归遍历父节点,以获取到我的叶子节点的完整路径。
我的表看起来像这样-问题在于没有特定的根节点(即,最高级的经理最终会互相报告)
+----+------------+-------+
| id | manager_id | name |
+----+------------+-------+
| 1 | 2 | Matt |
| 2 | 1 | Simon |
| 3 | 1 | John |
| 4 | 2 | Bob |
| 5 | 4 | Bill |
+----+------------+-------+
给比尔(id=5)
这样的用户,我在他们的报告行之后:
Matt > Simon > Bob > Bill
(理想情况下,当它尝试转到已遍历的节点时,它只会停在Matt处)
您正在寻找递归CTE
。
数据样本
CTE
查询
CREATE TEMPORARY TABLE t
(id INT, manager_id INT, name TEXT);
INSERT INTO t VALUES
(1,2,'Matt'),(2,1,'Simon'),
(3,1,'John'),(4,2,'Bob'),
(5,4,'Bill');