用sql儲存過程生成樹形結構資料表。
建立表:
create table table_newsclass
(newsclassname varchar(50),
newsclassid int,newsclassparentid int
)insert into table_newsclass
select '頂級欄目', 1, 0 union all
select '欄目一' , 2, 1 union all
select '欄目二' ,3, 1 union all
select '欄目三', 4, 2 union all
select 'sfg001' ,5, 2 union all
select 'sfg002' ,6, 3 union all
select 'sfg002' ,7, 3 union all
select 'sfg002' ,8, 2 union all
select 'sfg003' ,9, 3 union all
select 'wip001' ,10, 2 union all
select 'wip001' ,11 , 2 union all
select 'wip002' ,12 , 3 union all
select 'wip003' ,22 , 1 union all
select 'wip003' ,23 , 1 union all
select 'raw001',21, 25 union all
select 'raw004',23, 4 union all
select 'kkk001',25, 23
建立函式
set ansi_nulls on
set quoted_identifier on
go--返回指定樹形結構表
alter function [dbo].[f_gettree](@parent int)
returns @t table(newsclassname nvarchar(50),parent int,child int,level int,sort nvarchar(1000) collate latin1_general_bin)
asbegin
declare @level int
set @level=1
insert into @t
select newsclassname,newsclassparentid,newsclassid ,@level,convert(nvarchar(10),newsclassparentid)+convert(nvarchar(10),newsclassid)
from table_newsclass
where convert(nvarchar(10),newsclassparentid)=convert(nvarchar(10),@parent) collate latin1_general_bin
while @@rowcount>0
begin
set @level=@level+1
insert @t
select a.newsclassname,a.newsclassparentid,a.newsclassid,@level,b.sort+'-'+convert(nvarchar(10),newsclassid)
from table_newsclass a ,@t b
where convert(nvarchar(10),a.newsclassparentid)=convert(nvarchar(10),b.child) collate latin1_general_bin and b.level=@level-1
endreturn
end呼叫函式
select child as newsclassid,
space(level*2)+'|--' + newsclassname as newsclassname from dbo.f_gettree(0) order by sort
返回結果
1 |--頂級欄目
2 |--欄目一
22 |--wip003
10 |--wip001
11 |--wip001
4 |--欄目三
23 |--raw004
25 |--kkk001
21 |--raw001
5 |--sfg001
8 |--sfg002
23 |--wip003
25 |--kkk001
21 |--raw001
3 |--欄目二
12 |--wip002
6 |--sfg002
7 |--sfg002
9 |--sfg003
是你想要的結果麼?
嘿嘿!
mysql 樹形結構查詢(儲存過程)
就用資料資料庫表位址資料 中國地區 來說吧 用windows 請使用 gbk 可直接執行 去除註解 儲存過程 delimiter drop procedure if exists findlchild iid 遞迴父節點 layer 允許遞迴深度 create procedure findlchil...
sql樹形結構
create temporary table treeview id varchar 20 org name varchar 20 parent org id varchar 20 org code varchar 20 insert into treeview id,org name,parent...
資料庫儲存層次 樹形結構的標準做法
標準做法有3種 1 最早的做法 節點id裡包括完整路徑 曾祖父id 爺id 父id 本id 財務的會計科目編號就是這麼做的 現在基本很少使用了 2 遞迴做法 父id,本id 更早 完整的關係提供遞迴才能得到 目前比較普遍 好處是直觀簡單,增刪方便 壞處是生成樹需要遞迴 3 直接儲存法 本id,根id...