浏览 2787 次
锁定老帖子 主题:oracle递归查询
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-05
最后修改:2009-06-06
昨天一个哥们遇到了一个问题,问题的大意估计大家都应该遇到过了;大致如下:有一张表,包含各个邮政局的上下级别关系; 如,广州邮政的上级是广东邮政,广东的邮政的上级是中国邮政,而广州邮政的下级有天河邮政,越秀邮政 等,需求就是随便输入一个地方邮政的名字,输出他的所有上级或者下级(如如果输入的是广州邮政,要求他的上级的话,那么广东邮政,广东的邮政的上级也一并输出) 上网查了一下用oracle的递归查询可以解决 大致如下:
create table test_post( name varchar2(50) primary key, pareName varchar2(50) ); insert into test_post(name,parename)values('中国邮政','最高了'); insert into test_post(name,parename)values('广东邮政','中国邮政'); insert into test_post(name,parename)values('广州邮政','广东邮政'); insert into test_post(name,parename)values('深圳邮政','广东邮政'); insert into test_post(name,parename)values('东莞邮政','广东邮政'); insert into test_post(name,parename)values('天河邮政','广州邮政'); insert into test_post(name,parename)values('白云邮政','广州邮政'); insert into test_post(name,parename)values('越秀邮政','广州邮政'); insert into test_post(name,parename)values('上社邮政','天河邮政'); insert into test_post(name,parename)values('棠下邮政','天河邮政'); insert into test_post(name,parename)values('东埔邮政','天河邮政'); insert into test_post(name,parename)values('人民北邮政','越秀邮政'); insert into test_post(name,parename)values('解放南邮政','越秀邮政'); insert into test_post(name,parename)values('流花路邮政','越秀邮政'); insert into test_post(name,parename)values('三元里邮政','白云邮政'); insert into test_post(name,parename)values('机场路邮政','白云邮政'); insert into test_post(name,parename)values('新市墟邮政','白云邮政');
执行
connect by 语法请参考http://hi.baidu.com/zy1193/blog/item/6126af247788763bc89559a9.html一文
比如 CONNECT BY PRIOR org_id = parent_id就是说上一条记录的org_id 是本条记录的parent_id,即本记录的父亲是上一条记录 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |