大家好! 
是这样的一个问题:比如向数据库里添加某一个科目名称,这个科目有可能属于一级科目类别或二级科目类别或三级科目类别或更高. 
                              如下:aaa属于bbb,bbb属于ccc,ccc属于DDD 
                                        hhh属于DDD 
                                      jjj属于ccc,ccc属于DDD 
                                          也有可能某一科目名称属于更高的科目类别比如五级,六级或更高, 
                    这样的话如何随着更高的科目类别动态的添加科目呢? 
                最后达到效果:前台设置有添加科目的接口,后台数据库应怎么样做,需建些什么样的表?前台得到的数据怎么样录入, 
                                        前台窗口加载时,如何以树型结构显示(因为分层很多) 大概就是这个意思! 
谢谢!

解决方案 »

  1.   

    树形结构三个字段
    科目名称,级别,父科目名称就像guoli0813  那样就可以了 
      

  2.   

    declare @t table(科目编号 int,科目名称 varchar(100),上级科目编号 int)
    --插入一级科目
    insert @t select 1,'ddd',0
    --插入二级科目
    insert @t select 2,'ccc',1
    insert @t select 3,'hhh',1
    --插入三级科目
    insert @t select 4,'bbb',2
    insert @t select 5,'jjj',2
    --插入四级科目
    insert @t select 6,'aaa',4
    --.......
    --使用treeview即可显示。
      

  3.   

    树型排序输出
    create table tb (科目编号 int,科目名称 varchar(100),上级科目编号 int)
    --插入一级科目
    insert tb select 1,'ddd',0
    --插入二级科目
    insert tb select 2,'ccc',1
    insert tb select 3,'hhh',1
    --插入三级科目
    insert tb select 4,'bbb',2
    insert tb select 5,'jjj',2
    --插入四级科目
    insert tb select 6,'aaa',4
    go
    create function fn_Test(@id int)
    returns varchar(8000) as
    begin
        declare @ids varchar(8000)
        select @ids=','
        select @ids=@ids+rtrim(科目编号)+dbo.fn_Test(科目编号) from tb where 上级科目编号=@id 
        return @ids
    end
    go
    declare @ids varchar(8000)
    select @ids=','+dbo.fn_Test(0)
    select @ids
    select * from tb
    order by charindex(','+rtrim(科目编号)+',', @ids)drop function dbo.fn_Test
    drop table tb
      

  4.   

    非常谢谢jianghongtao!
    不过有一点不明的是,当在输入一个科目名称添加时,怎么确定它的科目编码是多少?
    比如说,添加一个叫"办公用品"的科目,但输入怎么确定它的科目编码是多少?怎么样来处理后才在数据库里正确录入呢?
      

  5.   

    非常谢谢jianghongtao! 
    不过有一点不明的是,当在输入一个科目名称添加时,怎么确定它的科目编码是多少? 
    比如说,添加一个叫"办公用品"的科目,但输入怎么确定它的科目编码是多少?怎么样来处理后才在数据库里正确录入呢?
    ---------------------------------------------------------------------------------
    按照树型结构存入数据库,在客户端录入的时候,如果是子类的话,首先要选择大类。然后再录入子类。。
    如:添加“办公桌”,首先在“办公用品”下面添加。
    存储数据时候:办公桌id, 描述, 办公用品id。
    类似这样的就行了
    网上很多类似的例子,楼主找找吧```