我可以用一行结果(使用来自myprevious question的查询)创建一个层次结构,但是当它有多行时,我不知道从哪里开始。
这是我的桌子:
id| parent_id| name|
-------|-----------|--------------------------|
1| [NULL]| United States|
2| [NULL]| Japan|
3| 1| New York|
4| 3| Brooklyn|
5| 6| Los Angeles|
6| 1| California|
7| 6| Dixon|
8| 2| Kyoto|
9| 2| Tokyo|
name
为空的parent_id
是父级。那么,如何生成这样的查询结果呢? Country| States/Province| City|
|-------------------------|-------------------|---------------|
| United States| New York| Brooklyn|
| United States| California| Los Angeles|
| United States| California| Dixon|
| Japan| Kyoto| [NULL]|
| Japan| Tokyo| [NULL]|
最佳答案
在表上看起来像一个简单的自联接,因为您感兴趣的级别数量有限:
select co.name as country,
p.name as "State/Province",
ct.name as city
from hierarchy co
left join hierarchy p on p.parent_id = co.id
left join hierarchy ct on ct.parent_id = p.id
where co.parent_id is null
order by co.name;
在线示例:https://rextester.com/UON36358
关于sql - 是否可以创建层次结构,但在Postgres中具有多个行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58603515/