0
我有一張通過引用自身來表示層次結構的表。在Postgres中獲取麪包屑
create table nodes (
id integer primary key,
parent_id integer references nodes (id),
name varchar(255)
);
給定一個特定的節點,我想按順序查找它的所有父母,如麪包屑。例如,給定數據:
insert into nodes (id,parent_id,name) values
(1,null,'Root'),
(2,1,'Left'),
(3,1,'Right'),
(4,2,'LeftLeft'),
(5,2,'LeftRight'),
(6,5,'LeftRightLeft');
如果我想開始在id=5
我希望的結果是:
id | depth | name
-- | ----- | ----
1 | 0 | 'Root'
2 | 1 | 'Left'
5 | 2 | 'LeftRight'
我不在乎,如果深度列存在,但我爲了清楚起見,將其包括在內以表明每個深度應該只有一個結果,並且結果應該按照深度順序。我不在乎它是上升還是下降。這樣做的目的是爲了能夠打印出一些麪包屑,看起來像這樣:
(1)Root \ (2)Left \ (5)LeftRight
難道你不是在那裏選擇「n」嗎?我認爲n.id會不明確,除非sql隱含地映射n的先前定義。 –
表別名不會跨越查詢之間的UNION ALL邊界;在'A UNION B'中,'A'和'B'查詢有它們自己的命名空間。 –