无限极分类sql数据库的设计

系统 2034 0
      
        --
      
      
        创建测试数据表tb
      
      
        create
      
      
        table
      
       tb(id 
      
        varchar
      
      (
      
        3
      
      ) , pid 
      
        varchar
      
      (
      
        3
      
      ) , name 
      
        varchar
      
      (
      
        10
      
      
        ))


      
      
        insert
      
      
        into
      
       tb 
      
        values
      
      (
      
        '
      
      
        001
      
      
        '
      
       , 
      
        null
      
        , 
      
        '
      
      
        广东省
      
      
        '
      
      
        )


      
      
        insert
      
      
        into
      
       tb 
      
        values
      
      (
      
        '
      
      
        002
      
      
        '
      
       , 
      
        '
      
      
        001
      
      
        '
      
       , 
      
        '
      
      
        广州市
      
      
        '
      
      
        )


      
      
        insert
      
      
        into
      
       tb 
      
        values
      
      (
      
        '
      
      
        003
      
      
        '
      
       , 
      
        '
      
      
        001
      
      
        '
      
       , 
      
        '
      
      
        深圳市
      
      
        '
      
      
        )


      
      
        insert
      
      
        into
      
       tb 
      
        values
      
      (
      
        '
      
      
        004
      
      
        '
      
       , 
      
        '
      
      
        002
      
      
        '
      
       , 
      
        '
      
      
        天河区
      
      
        '
      
      
        )


      
      
        insert
      
      
        into
      
       tb 
      
        values
      
      (
      
        '
      
      
        005
      
      
        '
      
       , 
      
        '
      
      
        003
      
      
        '
      
       , 
      
        '
      
      
        罗湖区
      
      
        '
      
      
        )


      
      
        insert
      
      
        into
      
       tb 
      
        values
      
      (
      
        '
      
      
        006
      
      
        '
      
       , 
      
        '
      
      
        003
      
      
        '
      
       , 
      
        '
      
      
        福田区
      
      
        '
      
      
        )


      
      
        insert
      
      
        into
      
       tb 
      
        values
      
      (
      
        '
      
      
        007
      
      
        '
      
       , 
      
        '
      
      
        003
      
      
        '
      
       , 
      
        '
      
      
        宝安区
      
      
        '
      
      
        )


      
      
        insert
      
      
        into
      
       tb 
      
        values
      
      (
      
        '
      
      
        008
      
      
        '
      
       , 
      
        '
      
      
        007
      
      
        '
      
       , 
      
        '
      
      
        西乡镇
      
      
        '
      
      
        )


      
      
        insert
      
      
        into
      
       tb 
      
        values
      
      (
      
        '
      
      
        009
      
      
        '
      
       , 
      
        '
      
      
        007
      
      
        '
      
       , 
      
        '
      
      
        龙华镇
      
      
        '
      
      
        )


      
      
        insert
      
      
        into
      
       tb 
      
        values
      
      (
      
        '
      
      
        010
      
      
        '
      
       , 
      
        '
      
      
        007
      
      
        '
      
       , 
      
        '
      
      
        松岗镇
      
      
        '
      
      
        )


      
      
        go
      
      
        --
      
      
        创建查询指定节点及其所有子节点的函数f_cid
      
      
        create
      
      
        function
      
       f_cid(
      
        @ID
      
      
        varchar
      
      (
      
        3
      
      )) 
      
        returns
      
      
        @t_level
      
      
        table
      
      (id 
      
        varchar
      
      (
      
        3
      
      ) , 
      
        level
      
      
        int
      
      
        )


      
      
        as
      
      
        begin
      
      
        declare
      
      
        @level
      
      
        int
      
      
        set
      
      
        @level
      
      
        =
      
      
        1
      
      
        insert
      
      
        into
      
      
        @t_level
      
      
        select
      
      
        @id
      
       , 
      
        @level
      
      
        while
      
      
        @@ROWCOUNT
      
      
        >
      
      
        0
      
      
        begin
      
      
        set
      
      
        @level
      
      
        =
      
      
        @level
      
      
        +
      
      
        1
      
      
        insert
      
      
        into
      
      
        @t_level
      
      
        select
      
       a.id , 
      
        @level
      
      
        from
      
       tb a , 
      
        @t_Level
      
      
         b

    
      
      
        where
      
       a.pid 
      
        =
      
       b.id 
      
        and
      
       b.
      
        level
      
      
        =
      
      
        @level
      
      
        -
      
      
        1
      
      
        end
      
      
        return
      
      
        end
      
      
        go
      
      
        --
      
      
        调用函数查询001(广东省)及其所有子节点
      
      
        select
      
       a.
      
        *
      
      
        from
      
       tb a , f_cid(
      
        '
      
      
        001
      
      
        '
      
      ) b 
      
        where
      
       a.id 
      
        =
      
       b.id 
      
        order
      
      
        by
      
      
         a.id


      
      
        /*
      
      
        

id   pid  name       

---- ---- ---------- 

001  NULL 广东省

002  001  广州市

003  001  深圳市

004  002  天河区

005  003  罗湖区

006  003  福田区

007  003  宝安区

008  007  西乡镇

009  007  龙华镇

010  007  松岗镇

 

(所影响的行数为 10 行)


      
      
        */
      
      
        --
      
      
        调用函数查询002(广州市)及其所有子节点
      
      
        select
      
       a.
      
        *
      
      
        from
      
       tb a , f_cid(
      
        '
      
      
        002
      
      
        '
      
      ) b 
      
        where
      
       a.id 
      
        =
      
       b.id 
      
        order
      
      
        by
      
      
         a.id


      
      
        /*
      
      
        

id   pid  name       

---- ---- ---------- 

002  001  广州市

004  002  天河区

 

(所影响的行数为 2 行)


      
      
        */
      
      
        --
      
      
        调用函数查询003(深圳市)及其所有子节点
      
      
        select
      
       a.
      
        *
      
      
        from
      
       tb a , f_cid(
      
        '
      
      
        003
      
      
        '
      
      ) b 
      
        where
      
       a.id 
      
        =
      
       b.id 
      
        order
      
      
        by
      
      
         a.id


      
      
        /*
      
      
        

id   pid  name       

---- ---- ---------- 

003  001  深圳市

005  003  罗湖区

006  003  福田区

007  003  宝安区

008  007  西乡镇

009  007  龙华镇

010  007  松岗镇

 

(所影响的行数为 7 行)


      
      
        */
      
      
        drop
      
      
        table
      
      
         tb


      
      
        drop
      
      
        function
      
       f_cid
    

 

无限极分类sql数据库的设计


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论