请教一条同表查询的sql语句

maroon 2010-03-26 08:53:40
在主页中做一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语句有问题,现请教大家,谢谢。
...全文
89 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
丰云 2010-03-26
  • 打赏
  • 举报
回复
不会又是倒分的。。。。
丰云 2010-03-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 maroon 的回复:]
不好意思,我用的是sql2000的。
[/Quote]
2000里面这个语句不能执行吗?
凤凰涅檠 2010-03-26
  • 打赏
  • 举报
回复
Microsoft SQL Server 2000 - 8.00.194 (Intel X86)

这不是2000的么
steal8275756 2010-03-26
  • 打赏
  • 举报
回复
1楼和2楼的回复对比出了三角形和星星的区别。。
凤凰涅檠 2010-03-26
  • 打赏
  • 举报
回复
顶~~~~~~~~~~~~
maroon 2010-03-26
  • 打赏
  • 举报
回复
不好意思,我用的是sql2000的。
cystudio 2010-03-26
  • 打赏
  • 举报
回复

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
happy664618843 2010-03-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sql77 的回复:]

SQL code
----------------------------------------------------------------
-- Author :SQL77(只为思齐老)
-- Date :2010-03-26 08:56:20
-- Version:
-- Microsoft SQL Server 2000 - 8.00.194 (Intel X8……
[/Quote]
K_Flisherman 2010-03-26
  • 打赏
  • 举报
回复
SQL77你抢分太快了
SQL77 2010-03-26
  • 打赏
  • 举报
回复
----------------------------------------------------------------
-- 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 行)


*/
porschev 2010-03-26
  • 打赏
  • 举报
回复
foreach循环。。。

先得到parentId为0的根节点list;

循环这个list。。得到根节点实体。。

里面再用一个foreach循环。。通过根节点实体ID。。得到以他为父节点的节点集合。。

就出来了啊。。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧