CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  疑难问题

子结点与父结点

楼主caobin518(linlin)2006-03-07 09:21:05 在 MS-SQL Server / 疑难问题 提问

问大家一个查询问题:  
   
  id           address         pid  
  0                 A                   O  
  1                 a                   0  
  2                 aa                 1  
  3                 aaa               2  
  ..........  
   
  说明:  
   
  id为主键,pid为父结点  
   
  要求结果为:  
   
  当我知道ID=3时,查询出  
   
  address  
   
  A   a   aa   aaa  
   
  要如何弄? 问题点数:30、回复次数:5Top

1 楼caobin518(linlin)回复于 2006-03-07 09:23:49 得分 0

相当于:  
   
  id           address         pid  
  0                 A                   O     ...........为省份  
  1                 a                   0     ...........为市  
  2                 aa                 1     ...........为县  
  3                 aaa               2     ...........为乡  
   
  要求结果为:  
   
  当我知道乡名为:“aaa”时,可以查询出它的详细地址(乡不存在重名)为:  
   
  AaaaaaaTop

2 楼lsqkeke(可可)回复于 2006-03-07 09:35:56 得分 0

id           address         pid  
  0                 A                   O     ...........为省份  
   
  你省份的PID是数字   0   还是字符'o'?Top

3 楼lsqkeke(可可)回复于 2006-03-07 09:40:09 得分 20

你省份的表字段的pid   如果是null   就好处理多了  
   
  declare   @t   table(id     int,   address   varchar(10),   pid   int)  
  insert   @T  
  select   0,           'A',             null   union   all  
  select   1,           'a',             0   union   all  
  select   2,           'aa',           1   union   all  
  select   3,           'aaa',         2  
   
  declare   @var   varchar(100),@w   varchar(15),@id   int,@vid   int  
  set   @var=''  
  select   @w=address,@id=pid     from   @t   where   id=3  
  while(@@rowcount<>0   )  
  begin  
            set   @var=@w+@var  
            set   @vid=@id  
    select   @w=address,@id=pid     from   @t   where   id=@vid  
  end  
  select   @varTop

4 楼mislrb(上班看看早报,上上CSDN,下班看看电影)回复于 2006-03-07 09:47:16 得分 10

create   table   tb(id   int   identity(0,1),address   varchar(10),pid   int)  
  insert   tb  
  select   'A',null   union   all    
  select   'a',                   0   union   all    
  select   'aa',                 1   union   all    
  select   'aaa',               2  
   
  if   exists(select   1   from   dbo.sysobjects   where   id=object_id(N'[dbo].f_getFullAddress')   and   xtype   in   (N'FN',N'IF',N'TF'))  
  drop   function   f_getFullAddress  
  go  
  create   function   f_getFullAddress(@id   int)  
  returns   @re   table(address   varchar(1000))  
  as  
      begin  
  declare   @t   table(id   int,address   varchar(10),[level]   int,pid   int)  
  declare   @level   int,@s   varchar(1000)  
                  select   @level=100,@s=''  
  insert   into   @t   select   id,address,@level,pid   from   tb   where   id=@id  
  while   @@rowcount>0  
  begin  
      set   @level=@level-1  
      insert   into   @t    
                      select   b.id,b.address,@level,b.pid   from   tb   b,@t   t   where   b.id=t.pid   and   t.[level]=@level+1        
  end  
                  select   @s=@s+'   '+address   from   @t   order   by   [level]  
                  insert   @re   select   stuff(@s,1,1,'')  
  return  
  end    
  go  
   
  select   *   from   dbo.f_getfulladdress(3)  
   
   
  --结果  
  /*  
  address                                                                                                                                                              
  --------------------  
  A   a   aa   aaa  
  */Top

5 楼caobin518(linlin)回复于 2006-03-07 10:27:58 得分 0

谢谢二位Top

相关问题

  • 怎样取得web树的一个结点的第一个孩子结点,以及该结点的父结点?
  • 如何在子结点下加一父结点(急)
  • 父结点控制子结点的问题?
  • 如何判断(关于TREEVIEW)当前结点下有子结点或有父结点?
  • 如何清空TreeView中的所有结点(多个根结点与子结点)?-》Delete()不行啊!
  • 使用treeview控件,如何在父结点上加子结点啊?
  • 求寻找二叉树子结点的父结点的递规算法?多谢!
  • treeview在数据库中删除父结点其所有的子结点
  • 找出所有子结点。
  • 怎样取到子结点

关键词

  • null
  • pid
  • allselect
  • 省份
  • level
  • aaa
  • union
  • 乡
  • address
  • varchar

得分解答快速导航

  • 帖主:caobin518
  • lsqkeke
  • mislrb

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo