如何在 sql 层级上显示大 parent?
How to show grand parent on sql hierarchy?
所以这是我的 table:
id |parent_id |name
-------|-----------|--------------------
1| 0|Kevin Gravey
2| 0|John Chen
3| 1|Clark Garvey
4| 2|Halsey Chen
5| 3|Carl Garvey
6| 4|Betty Chen
7| 5|Rick Garvey
8| 6|Donna Chen
10| 5|Chris Garvey
11| 6|Harrington Chen
但我需要让 table 看起来像这样:
id |parent_id |name
-------|-----------|--------------------
1| 0|Kevin Gravey
2| 0|John Chen
3| 0|Kevin Gravey
4| 0|John Chen
5| 0|Kevin Gravey
6| 0|John Chen
7| 0|Kevin Gravey
8| 0|John Chen
10| 0|Kevin Gravey
11| 0|John Chen
我使用了来自 的查询,但我得到的是:
id |parent_id |name
-------|-----------|--------------------
1| 0|
2| 0|
3| 1|Kevin Gravey
4| 2|John Chen
5| 3|Clark Garvey
6| 4|Halsey Chen
7| 5|Carl Garvey
8| 6|Betty Chen
10| 5|Rick Garvey
11| 6|Donna Chen
有人知道查询是什么吗?我正在使用 postgre。
你走对了。考虑使用这个:
with recursive tree as (
select id,
parent_id,
array[id] as all_parents,
name as parent_name
from hierarchy
where parent_id = 0
union all
select c.id,
p.parent_id,
p.all_parents,
p.parent_name
from hierarchy c
join tree p
on c.parent_id = p.id
and c.id <> all (p.all_parents)
)
select id, parent_id, parent_name
from tree;
所以这是我的 table:
id |parent_id |name
-------|-----------|--------------------
1| 0|Kevin Gravey
2| 0|John Chen
3| 1|Clark Garvey
4| 2|Halsey Chen
5| 3|Carl Garvey
6| 4|Betty Chen
7| 5|Rick Garvey
8| 6|Donna Chen
10| 5|Chris Garvey
11| 6|Harrington Chen
但我需要让 table 看起来像这样:
id |parent_id |name
-------|-----------|--------------------
1| 0|Kevin Gravey
2| 0|John Chen
3| 0|Kevin Gravey
4| 0|John Chen
5| 0|Kevin Gravey
6| 0|John Chen
7| 0|Kevin Gravey
8| 0|John Chen
10| 0|Kevin Gravey
11| 0|John Chen
我使用了来自
id |parent_id |name
-------|-----------|--------------------
1| 0|
2| 0|
3| 1|Kevin Gravey
4| 2|John Chen
5| 3|Clark Garvey
6| 4|Halsey Chen
7| 5|Carl Garvey
8| 6|Betty Chen
10| 5|Rick Garvey
11| 6|Donna Chen
有人知道查询是什么吗?我正在使用 postgre。
你走对了。考虑使用这个:
with recursive tree as (
select id,
parent_id,
array[id] as all_parents,
name as parent_name
from hierarchy
where parent_id = 0
union all
select c.id,
p.parent_id,
p.all_parents,
p.parent_name
from hierarchy c
join tree p
on c.parent_id = p.id
and c.id <> all (p.all_parents)
)
select id, parent_id, parent_name
from tree;