資料庫版 樹形生成結構

2021-06-04 12:33:13 字數 1211 閱讀 5277

測試資料   

declare @t table(id char(3),pid char(3),name nvarchar(10))

insert @t select '001',null ,'山東省'

union all select '002','001','煙台市'

union all select '004','002','招遠市'

union all select '003','001','青島市'

union all select '005',null ,'四會市'

union all select '006','005','清遠市'

union all select '007','006','小分市'

--深度排序顯示處理

--生成每個節點的編碼累計(相同當單編號法的編碼)

declare @t_level table(id char(3),level int,sort varchar(8000))

declare @level int

set @level=0

insert @t_level select id,@level,id

from @t

where pid is null

while @@rowcount>0

begin

set @level=@level+1

insert @t_level select a.id,@level,b.sort+a.id

from @t a,@t_level b

where a.pid=b.id

and b.level=@level-1

end

--顯示結果

select space(b.level*2)+'|--'+a.name

from @t a,@t_level b

where a.id=b.id

order by b.sort

/*--結果

|--山東省

|--煙台市

|--招遠市

|--青島市

|--四會市

|--清遠市

|--小分市

--*/

資料庫儲存樹形結構的資料

最近接觸樹形結構資料非常的多,幾乎超過了過去8年多,開發所有系統的總和.本來嘛,一般的遞迴就可以解決了,可是這個系統中總是需要頻繁的訪問樹結點,及父結點,子結點,動不動就要遞迴,且樹的使用非常之多,做的多了搞的人都要嘔吐了,下面在網上找到幾篇比較有用的資料,記錄彙總一下.首先,資料庫不一定要用傳統的...

資料庫設計樹形結構的技巧

前言 當業務中遇到樹形結構時,比如選單,省市區,部門等時如何設計資料庫。一種設計可以通過每個字段帶有parent id 來遞迴獲取所有的節點 也可以通過另一種方法來獲取某個節點的子節點 使用level記錄當前節點的父節點code 新增乙個輔助的varchar欄位level,欄位的邏輯是多個部門的id...

級聯資料生成樹形結構

tree 結構 public class treenode public string gettitle public integer getparentid public void setparentid integer parentid public void settitle string t...