在主页中做一treeview,表结构如下:
nodeid  name  parentid
1 广东  0
2 广西  0
3 湖南  0
4 广州  1
5 中山  1
6 番禺  1
7 南宁  2
8 桂林  2
9 柳州  2
10 长沙  3现想让它如下显示:
nodeid  name  parentid
1 广东  null
2 广西  null
3 湖南  null
4 广州  广东
5 中山  广东
6 番禺  广东
7 南宁  广西
8 桂林  广西
9 柳州  广西
10 长沙  湖南我写的sql语句有问题,现请教大家,谢谢。

解决方案 »

  1.   

    foreach循环先得到parentId为0的根节点list;循环这个list。。得到根节点实体。。里面再用一个foreach循环。。通过根节点实体ID。。得到以他为父节点的节点集合。。就出来了啊。。
      

  2.   

    ----------------------------------------------------------------
    -- Author  :SQL77(只为思齐老)
    -- Date    :2010-03-26 08:56:20
    -- Version:
    --      Microsoft SQL Server  2000 - 8.00.194 (Intel X86) 
    -- Aug  6 2000 00:57:48 
    -- Copyright (c) 1988-2000 Microsoft Corporation
    -- Desktop Engine on Windows NT 5.1 (Build 2600: Service Pack 3)
    --
    ----------------------------------------------------------------
    --> 测试数据:#TB
    if object_id('tempdb.dbo.#TB') is not null drop table #TB
    go 
    create table #TB([nodeid] int,[name] varchar(4),[parentid] int)
    insert #TB
    select 1,'广东',0 union all
    select 2,'广西',0 union all
    select 3,'湖南',0 union all
    select 4,'广州',1 union all
    select 5,'中山',1 union all
    select 6,'番禺',1 union all
    select 7,'南宁',2 union all
    select 8,'桂林',2 union all
    select 9,'柳州',2 union all
    select 10,'长沙',3
    --------------开始查询--------------------------select NODEID,NAME,(SELECT NAME FROM #TB WHERE NODEID=T.PARENTID)NAME from #TB T
    ----------------结果----------------------------
    /* (所影响的行数为 10 行)NODEID      NAME NAME 
    ----------- ---- ---- 
    1           广东   NULL
    2           广西   NULL
    3           湖南   NULL
    4           广州   广东
    5           中山   广东
    6           番禺   广东
    7           南宁   广西
    8           桂林   广西
    9           柳州   广西
    10          长沙   湖南(所影响的行数为 10 行)
    */
      

  3.   


    create table #temp(
    nodeid int,
    name varchar(100),
    parentid int)insert #temp values (1 ,'广东', 0)
    insert #temp values (2 ,'广西',0)
    insert #temp values (3 ,'湖南',0)
    insert #temp values (4 ,'广州',1)
    insert #temp values (5 ,'中山',1)
    insert #temp values (6 ,'番禺',1)
    insert #temp values (7 ,'南宁',2)
    insert #temp values (8 ,'桂林',2)
    insert #temp values (9 ,'柳州',2)
    insert #temp values (10,'长沙',3)select nodeid,name,(select name from #temp b where a.parentid=b.nodeid) as parentid from #temp a
      

  4.   

    不好意思,我用的是sql2000的。
      

  5.   

    Microsoft SQL Server  2000 - 8.00.194 (Intel X86) 这不是2000的么