是否可以创建层次结构但在 Postgres 中有多个行?

Is it posible to create hierarchy but with multiple rows in Postgres?

我可以用一行结果创建层次结构(使用来自我的 的查询),但是当它有多行时我不知道从哪里开始。

这是我的 table:

     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 有 null parent_id 是一个宏大的 parent。那么,如何查询生成这样的结果呢?

                   Country|    States/Province|           City|
|-------------------------|-------------------|---------------|
|            United States|           New York|       Brooklyn|
|            United States|         California|    Los Angeles|
|            United States|         California|          Dixon|
|                    Japan|              Kyoto|         [NULL]|
|                    Japan|              Tokyo|         [NULL]|

看起来像是 table 上的简单自连接,因为您感兴趣的级别数有限:

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