ITPUB??ì3
新一届的微软MVP评选已经开始,欢迎各位推荐!
ITPUB论坛 » Oracle开发 » 求解数据库表的递归查询问题

标题: 求解数据库表的递归查询问题
离线 sachico
初级会员



精华贴数 0
个人空间 0
技术积分 106 (15876)
社区积分 0 (318110)
注册日期 2005-3-23
论坛徽章:0
      
      

发表于 2007-1-4 11:44 
求解数据库表的递归查询问题

一张区域表结构如下:
RegionId int identity not null, --流水号主键
Depth int,--深度
ParentId int, --父节点
RegionName varchar(50) --区域名
这张表的数据大概描述如下:根节点深度为1,“中华人民共和国”;下面包含“东北地区”,“华北沿海地区”,“黄河中游地区”,“华东沿海地区”,“华南沿海地区”等子节点,其深度为2;华北沿海地区下面包含“北京”、“天津”等,深度为3;北京下面有“东城区”,“西城区”,“崇文区”等,深度为4。
请问我要根据任何一条给定记录的主键,获取其下面所有子节点,这样的存储过程怎么写?另外,考虑到这样的查询可能对性能会有影响,请问大家在碰到类似问题的时候是怎么解决的,表的结构设计有没有其他更好的方法?
谢谢


__________________
QQ:376830222MSN:xiongfanghui@hotmail.com
只看该作者    顶部
离线 chenwenjian
土哥


精华贴数 1
个人空间 0
技术积分 2200 (720)
社区积分 3079 (437)
注册日期 2002-2-28
论坛徽章:7
管理团队成员ITPUB北京香山2007年会纪念徽章会员2007贡献徽章   
      

发表于 2007-1-4 13:55 
SELECT     *
      FROM xxx
CONNECT BY PRIOR RegionId_id = ParendId
START WITH RegionId = xx;


__________________
奋斗!努力!
只看该作者    顶部
离线 sachico
初级会员



精华贴数 0
个人空间 0
技术积分 106 (15876)
社区积分 0 (318110)
注册日期 2005-3-23
论坛徽章:0
      
      

发表于 2007-1-4 15:31 
connect by 应该是oracle的吧,在sql server 中有类似的吗


__________________
QQ:376830222MSN:xiongfanghui@hotmail.com
只看该作者    顶部
离线 highwind
初级会员



精华贴数 0
个人空间 0
技术积分 78 (19913)
社区积分 1 (35673)
注册日期 2004-8-23
论坛徽章:0
      
      

发表于 2007-1-4 17:23 
郁闷啊你,你到Oracle 开发中问Sql server问题....
你最好在增加一个字段 identify 字段,假设
国为01
区域为0101  
            0102
区域下面的城市为
      010102
这样如果查
就  identify like '0101%'


只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问