我們在平常的系統開發中常常會遇到像無限級分類這樣的樹型結構資料,現提供乙個可用的資料庫儲存過程,可以完成樹型結構資料的排序。
環境:windows7+sql server 2008
說明:下面**已經轉換成sql server2000的指令碼,處理效果如下,看sortname欄位結果,**經過測試。
建立樹型表
create插入測試資料table
[dbo].
[categories](
[category_id][
int]
identity(1
,1) not
null,[
parent_id][
int]
null,[
category_name][
varchar](
500)
null
,constraint
[pk_categories
]primary
keyclustered([
category_id
]asc
) on
[primary])
on[primary]go
insert建立儲存過程,表中的level為級別深度,通過生成的臨時表與分類表關聯顯示結果。[dbo].
[categories](
[category_id],
[parent_id],
[category_name])
values(1
, 0, convert
(text
, n'a'
))insert
[dbo].
[categories](
[category_id],
[parent_id],
[category_name])
values(2
, 0, convert
(text
, n'b'
))insert
[dbo].
[categories](
[category_id],
[parent_id],
[category_name])
values(3
, 1, convert
(text
, n'aa'
))insert
[dbo].
[categories](
[category_id],
[parent_id],
[category_name])
values(4
, 3, convert
(text
, n'
aaa'
))insert
[dbo].
[categories](
[category_id],
[parent_id],
[category_name])
values(5
, 2, convert
(text
, n'bb'
))insert
[dbo].
[categories](
[category_id],
[parent_id],
[category_name])
values(6
, 1, convert
(text
, n'
aa2'
))insert
[dbo].
[categories](
[category_id],
[parent_id],
[category_name])
values(7
, 1, convert
(text
, n'
aa3'
))insert
[dbo].
[categories](
[category_id],
[parent_id],
[category_name])
values(8
, 3, convert
(text
, n'
aaa2'))
insert
[dbo].
[categories](
[category_id],
[parent_id],
[category_name])
values(9
, 4, convert
(text
, n'
aaa3'))
insert
[dbo].
[categories](
[category_id],
[parent_id],
[category_name])
values(10
, 2, convert
(text
, n'
bb2'
))
createprocedure
[dbo].
[get_treedata]as
begin
--建立臨時表
create
table
#tmp_table (id
int,
[level
]int
)declare
@levelvalue
intset
@levelvalue=0
insert
#tmp_table
select0,
@levelvalue
--將資料寫入到臨時表
while
@@rowcount
>
0begin
set@levelvalue
=@levelvalue+1
insert
#tmp_table
select
a.category_id,
@levelvalue
from
categories
asa,#tmp_table
asb
where
a.parent_id=b.
[id]andb.[
level]=
@levelvalue-1
end--
select * from #tmp_table
select
a.category_id,a.parent_id,a.category_name,b.
[level
],
case
when
a.parent_id=0
then
a.category_name
else
replicate('
-',b.[
level])
+a.category_name
endas
sortname
from
categories
asa
join
#tmp_table
asb
ona.category_id
=b.id
order
bysortname
return
end
java 組裝樹型結構資料
自己開發遇到的後台組裝的樹結構方法,記錄下來 1 首先資料庫為oracle,使用 start with 語句和union 組裝要查詢資料 select from select equip.equip category id as id,equip.equip category name as nam...
資料結構(承) 樹型結構(一)
樹的定義 具有n n 0 個節點的有限非空集合,且有且只有乙個特定的節點成為根。節點 節點表示樹中的元素,包括資料項及若干指向子樹的分支。節點的度 節點所擁有的子樹的個數稱為該節點的度 degree 樹的度 樹中各節點度的最大值成為樹的度。葉節點 度為0的節點稱為葉節點。分支節點 度不為0的節點成為...
Trie樹 高階樹型結構
trie樹應用 trie 樹中文名叫字典樹 字首樹等等。這些名字暗示其與字元的處理有關,事實也確實如此,它主要用途就是將字串 當然也可以不限於字串 整合成樹形。它的核心思想就是通過最大限度地減少無謂的字串比較,使得查詢高效率,即 用空間換時間 再利用共同字首來提高查詢效率。典型應用於統計和排序大量的...