• [织梦吧]唯一域名:www.dedecms8.com,织梦DedeCMS学习平台.

当前位置: > 编程与数据库 > mssql2005教程 >

使用SQLSERVER 2005/2008 递归CTE查询树型结构的方法

来源: www.dedecms8.com 编辑:织梦吧 时间:2012-07-01点击:

   我们经常遇到树型结构,把它们显示在一个类似TreeView控件上的情况。这时我们可以使用Recursive Common Table Expressions(CTE)实现 。

  下面是一个简单的Family Tree 示例: 

  1. DECLARE @TT TABLE (ID int,Relation varchar(25),Name varchar(25),ParentID int)  
  2. INSERT @TT SELECT 1,' Great GrandFather' , 'Thomas Bishop', null UNION ALL  
  3. SELECT 2,'Grand Mom', 'Elian Thomas Wilson' , 1 UNION ALL  
  4. SELECT 3, 'Dad', 'James Wilson',2 UNION ALL  
  5. SELECT 4, 'Uncle', 'Michael Wilson', 2 UNION ALL  
  6. SELECT 5, 'Aunt', 'Nancy Manor', 2 UNION ALL  
  7. SELECT 6, 'Grand Uncle', 'Michael Bishop', 1 UNION ALL  
  8. SELECT 7, 'Brother', 'David James Wilson',3 UNION ALL  
  9. SELECT 8, 'Sister', 'Michelle Clark', 3 UNION ALL  
  10. SELECT 9, 'Brother', 'Robert James Wilson', 3 UNION ALL  
  11. SELECT 10, 'Me', 'Steve James Wilson', 3  
  12.  
  13. ----------Query---------------------------------------  
  14. ;WITH FamilyTree  
  15. AS(  
  16. SELECT *, CAST(NULL AS VARCHAR(25)) AS ParentName, 0 AS Generation FROM @TT  
  17. WHERE ParentID IS NULL  
  18. UNION ALL  
  19. SELECT Fam.*,FamilyTree.Name AS ParentName, Generation + 1 FROM @TT AS Fam  
  20. INNER JOIN FamilyTree ON Fam.ParentID = FamilyTree.ID  
  21. )SELECT * FROM FamilyTree  

Output:

query_result

希望对您有帮助 

猜你也喜欢看这些...

About D8

  • ©2014 织梦吧(d8) DedeCMS学习交流平台
  • 唯一网址 www.DedeCMS8.com 网站地图
  • 联系我们 1170734538@qq.com ,  QQ