zoukankan      html  css  js  c++  java
  • SQL 遍历父子关系表(二叉树)获得所有子节点 所有父节点(转)

    --建立測試環境
    Create Table A
    (ID Int,
     fatherID Int,
     NameVarchar(10)
    )
    Insert A Select 1,        NULL,       'tt'
    Union All Select 2,        1,          'aa'
    Union All Select 3,        1,          'bb'
    Union All Select 4,        2,          'cc'
    Union All Select 5,        2,          'gg'
    Union All Select 6,        4,          'yy'
    Union All Select 7,        4,          'jj'
    Union All Select 8,        7,           'll'
    Union All Select 9,        NULL,  'uu'
    Union All Select 10,       9,         'oo'
    GO
    --建立函數

    --取字子节点
    Create Function GetChildren(@ID Int)
    Returns @Tree Table (ID Int, fatherID Int, Name Varchar(10))
    As
    Begin
    Insert @Tree Select ID, fatherID, Name From A Where fatherID = @ID
    While @@Rowcount > 0
    Insert @Tree Select A.ID, A.fatherID, A.Name From A A Inner Join @Tree B On A.fatherID = B.ID And A.ID Not In (Select ID From @Tree)
    Return
    End
    GO

    --取父节点

    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    GO
    Create Function [dbo].[GetParent](@ID Int)
    Returns @Tree Table (ID Int, fatherID Int, Name Varchar(10))
    As
    Begin
    Insert @Tree Select ID, fatherID, Name From A Where ID = @ID
    While @@Rowcount > 0
    Insert @Tree Select A.ID, A.fatherID, A.Name From A A Inner Join @Tree B On A.ID = B.fatherID And A.ID Not In (Select ID From @Tree)
    Return
    End

    --測試
    Select * From dbo.GetChildren(1)

    Select * From dbo.GetParent(9)
    GO

  • 相关阅读:
    Overview of .rdp file settings
    Html事件冒泡
    文件复制cp的操作及scp的运用
    防火墙操作
    批量添加文件夹
    linux查看历史输入命令history
    linux 批量删除文件
    服务器磁盘空间不足的问题
    linux查看CPU、内存、磁盘大小
    tomcat启动成功但是无法访问ip地址及端口问题解决始末
  • 原文地址:https://www.cnblogs.com/dingding0505/p/3715420.html
Copyright © 2011-2022 走看看