利用MySQL排序將樹結構表資料封裝成樹結構物件

2021-07-12 00:15:09 字數 1733 閱讀 4680

本人菜鳥乙個,望大家多多指教

需求:將具備樹結構的線性表遍歷出來,得到樹形結構的物件

解決思路:

要不查詢整條記錄,要不查詢具備樹結構的部分資料。再通過具備樹結構的部分資料,將整條記錄封裝到物件中

怎麼查詢具備樹結構的部分資料

首先確定部分資料,我選擇記錄的id

那麼問題就變成怎麼生成具備一定規則的id,又怎麼通過規律的讀取寫入樹物件

通過網上檢視可以先通過排序生成乙個完全展開的樹結構,然後結合樹的深度生成乙個樹的物件

文章中讓我最吃驚的地方是利用mysql的排序規則來實現樹的排序

那麼mysql的排序又是什麼呢?我現在也不清楚

我這裡只把握了乙個規律就是,父節點的排序樹一定在其所有子節點前面,而且它們是挨著的。假設父節點排序是a,那麼它的子節點必定是a[?],根據mysql的排序,a後面緊接著是a[?]

下面內容來自

方法三:利用中間表和過程

(本方法由yongyupost2000提供樣子改編)

建立儲存過程如下。由於mysql中不允許在同一語句中對臨時表多次引用,只以使用普通表tmplst來實現了。當然你的程式中負責在用完後清除這個表。

delimiter //

drop procedure

ifexists

showtreenodes_yongyupost2000//

create

procedure

showtreenodes_yongyupost2000

(in rootid int)

begin

declare

level

int ;

drop table if exists tmplst;

create table tmplst (

id int,

nlevel int,

scort varchar(8000)

); set level=0 ;

insert into tmplst select id,level,id from treenodes where pid=rootid;

while row_count()>0

doset level=level+1 ;

insert into tmplst

select a.id,level,concat(b.scort,a.id) from treenodes a,tmplst b

where a.pid=b.id and b.nlevel=level-1 ;

endwhile;

end;

//delimiter ;

call showtreenodes_yongyupost2000(0);

執行完後會產生乙個tmplst表,nlevel 為節點深度,scort 為排序字段。

使用方法

select concat(space(b.nlevel*2),'+--',a.nodename)

from treenodes a,tmplst b

where a.id=b.id

order

by b.scort;

mysql 樹結構表,通過函式更新祖級路徑

通過函式方式,更新mysql樹形結構表,每個節點的祖級路徑 create table sys dept dept id varchar 50 not null comment 部門id primary key,parent id varchar 50 default 0 null comment 父...

如何將SqlServer中表結構以及表資料全部匯出

不記錄,很快就忘記了 記錄了,彷彿也記得更牢了 步驟如下 step1 右擊資料庫,彈出的標籤中選擇tasks generate scripts.step2 彈出新視窗中,勾選 請下次別煩了別通知我了 然後點選下一步 step3 在又彈出的新頁面,選擇指定的資料庫,然後勾選你想要的表,選擇完畢了,再選...

資料結構4 利用棧的結構,將二進位制數轉換為十進位制數

編寫乙個程式,利用棧的結構,將二進位制數轉換為十進位制數,如下 include stdio.h include math.h define stack init size 20 define stackincrement 10 typedef char elemtype typedef struct...