【问题标题】:How to show grand parent on sql hierarchy?如何在 sql 层次结构上显示祖父母?
【发布时间】:2020-02-23 09:49:00
【问题描述】:

这是我的桌子:

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

但我需要让表格看起来像这样:

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

我使用了来自 this 的查询,但我得到的是:

  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。

【问题讨论】:

    标签: sql postgresql hierarchical-query


    【解决方案1】:

    你是在正确的方式。考虑使用这个:

    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;
    

    Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      • 2016-07-01
      • 1970-01-01
      相关资源
      最近更新 更多