簡體   English   中英

排序樹數據結構

[英]Sort a tree data structure

我有一張這樣的桌子:

CREATE TABLE tree ( 
 id integer NOT NULL,
 name character varying(50) NOT NULL,
 parentid integer,
 displayorder integer NOT NULL,
 CONSTRAINT tree_id PRIMARY KEY (id)
) 

在此處輸入圖片說明

顯示順序在同一父級中是相對的。

我一直堅持對這些數據進行排序,以得到如下輸出:

1 -> 1.1 -> 1.1.1 -> 1.1.2 -> 1.1.3 -> 1.2 -> 1.3 -> 2 -> 3

非常感謝您能幫助我。 謝謝!

您需要遞歸查詢才能遍歷樹。 要在每個級別上正確應用displayorder ,還需要收集每個節點的路徑,以使排序成為可能:

with recursive all_nodes as (
   select id, name, parentid, displayorder, array[id] as path
   from tree
   where parentid is null
   union all
   select c.id, c.name, c.parentid, c.displayorder, p.path||c.id
   from tree c 
     join all_nodes p on c.parentid = p.id
)
select id, name
from all_nodes
order by path, displayorder;

在線示例: http : //rextester.com/MJEL66144

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM