數據庫版 樹形生成結構

測試數據   
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   
/*--結果  
|--山東省  
  |--煙臺市  
    |--招遠市  
  |--青島市  
|--四會市  
  |--清遠市  
    |--小分市  
--*/  



 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章