unit表: ID(自动编号),cityID,unitname,city,province 其他字段..unit表中的记录是通过WEB页面提交的
比如我提交的内容到数据库中是这样的
ID cityID  unitname  city    province     provinceID
1 410500  xxx单位0  周口市   河南省       410000
2 421600  xxx单位1  安阳市   河北省 420000
3 421600  xxx单位2  安阳市   河北省 420000现在又要在WEB页面中以树形结构显示出来请教各位这样设计表有没有错,请指正,树形结构在JSP中如何实现我在树形结构中要显示的是如下效果
比如:
--河北省
--------安阳市
--------------xxx单位1
--------------xxx单位2
--------XXX区
--河南省
--------周口市
-------------xxx单位0

解决方案 »

  1.   

    ----创建测试数据
    declare @t table(ID int,cityID varchar(10),unitname varchar(15),city varchar(15), province varchar(15),provinceID int)
    insert @t
    select 1,'410500',  'xxx单位0',  '周口市',   '河南省','410000' union all
    select 2,'421600',  'xxx单位1',  '安阳市',   '河北省','420000' union all
    select 3,'421600',  'xxx单位2',  '安阳市',   '河北省','420000'----查询
    SELECT province FROM (
    select top 100 percent  * from(
    select distinct province,provinceID,cityID,1 as OrderID from @t as a
    union all
    select distinct replicate(' ',10) + city,provinceID,cityID,2 from @t 
    union all
    select replicate(' ',20) + unitname,provinceID,cityID,3 from @t) as a 
    order by provinceID,cityID,OrderID
    ) AS t
    /*结果
    province                            
    ----------------------------------- 
    河南省
              周口市
                        xxx单位0
    河北省
              安阳市
                        xxx单位1
                        xxx单位2
    */
      

  2.   

    感覺你這樣不太好。你可以參考MRP中BOM表設計
      

  3.   

    其实设计成树形结构的方法很多
    似乎SQL版也提过类似的问题,楼主可以找下
      

  4.   

    可以看作bom展開問題,寫個函數就可以
      

  5.   

    如果在城市编码(IDcityID)上做文章的话,可能语句会简单些
    --河北省
    --------安阳市
    --------------xxx单位1
    --------------xxx单位2
    --------XXX区
    --河南省
    --------周口市
    -------------xxx单位0
    例如这样来写:
    河北省编码为01
    安阳市为0101
    XXX单位1为010101
    XXX单位2为010102
    XXX区为0102
      

  6.   

    create table t(city varchar(15), province varchar(15))
    insert t
    select     '周口市',   '河南省' union all
    select     'xxx單位0', '周口市'  union all
    select     '安陽市',   '河北省' union all
    select     '安陽市',   '河北省' union all
    select     'xxx單位1', '安陽市' union all
    select     'xxx單位2', '安陽市' union all
    select     '吉安',     '江西省' union all
    select     '吉水',     '吉安'
    create function dbo.aa(@str varchar(100))
    returns @table table(city varchar(100),province varchar(100),level int)
    as
    begin
    declare @level int
    set @level=1
    insert into @table
    select distinct city,province,@level from t a where province=@str
    while @@rowcount>0 
    begin
    set @level=@level+1
    insert into @table
    select distinct a.city,a.province,@level from t a ,@table b 
    where a.province=b.city and b.level=@level-1
    end
    return
    endselect * from  dbo.aa('江西省') city                                                                                                 province                                                                                             level       
    ---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- ----------- 
    吉安                                                                                                   江西省                                                                                                  1
    吉水                                                                                                   吉安                                                                                                   2(2 row(s) affected)
      

  7.   

    LZ這樣設置表是不合理的,unitname 這個字段是存放縣級城市,如果它下面還有多層呢,
    你就沒地方放吧.
      

  8.   

    hellowork(一两清风) 
    在数据库中是显示了一个树形结构.现在问题是表里面的数据是由web页面提交后不断累加的,而且还要将它写回web页,在web页中是以树形结构显示的
      

  9.   

    楼主的表设计是不合理的,这样维护很麻烦。
    我给出下面的表设计,供参考。
    Tb_province
    provinceID province parentID
    410000 河南省 0
    420000 河北省 0Tb_city
    cityID city parentID
    1410500 周口市 410000
    2421600            安阳 420000Tb_unit
    unitID unitname parentID
    1 xxx单位0          1410500
    2 xxx单位1          2421600  
    3 xxx单位2          2421600  
      

  10.   

    winjay84() 我已将表改成这样了,现在是,我如何将数据在web页中以我上面给出的例子形式的树形结构显示出来
      

  11.   

    web頁面 難道不是Jsp 來做的麽?
    數據是數據庫讀的吧