oracle 递归应用(挺复杂的)】的更多相关文章

先转一个讲Oracle递归讲得非常透彻的文章: http://blog.csdn.net/weiwenhp/article/details/8218091 前言:嗯,这也是一个前人挖坑,后人来填的故事. 数据库里有一个关于地域信息的表,可以叫它tableA,此表里有三个字段分别是 parent_area_code.area_code.isvalid, 有一段sql的功能是查找指定地域code的所有父类地域,sql如下,这是一个典型的递归的写法: select area_code from tab…
最近做数据过滤觉得很有必要记录下整个过程,说不定下次就不知道了. 废话不多说开始: 表结构: 企业表(自关联,采用树的形式记录分子公司) 区域表(自关联,采用树的形式记录省/市/县/乡,数据量大) 公司管辖区域表(公司-区域的映射表,一对多,记录了公司所具有的管辖区域) 场景:根据自己的管辖区域构建区域查询条件 分子公司都有可能维护了管辖区域,上级具有下级的管辖权限(原因:上级公司有可能没有维护下级公司具有的管辖区域,而上级公司要管理下级就不需具有下级的管辖区域,所用需同时把下级的管辖区域给上级…
oracle递归查询(单表包含多级上下级关系) http://www.cnblogs.com/walk-the-Line/p/4882866.html -- 查找所有第一层(包括)下的所有子节点 -- prior 放在m.id 一边,意为查找所有父节点是m.id的节点,而m.id 为connect by 前面查询的结果集 ' CONNECT BY PRIOR m.id = m.parent; oracle connect by用法 http://www.cnblogs.com/cx-zyq/p/…
递归层级查询:start with connect by prior  以部门表作为解析 表结构:dept{id:'主键',name:'部门名称',parent_id:'父亲id'} select * from dept start with id=1 connect by prior id= parent_idorder siblings by id 分两部分理解: 第一步找出一条数据作为基础:select * from dept start with id =? 第二步prior放在左边还是…
  当对象存在父节点.子节点时,通过特定的方式获取父节点.子节点数据构建树状结构或其它形式结构时,通常都会使用递归,如:一个公司有多个部门.每个部门下可能有多个小部门,小部门下面又有组-.为了数据容易管理和维护,通过构建合适的表结构存储这些数据,以下示例以省市县为例学习了解递归: 1.创建存储省市县数据表: 1: create table tb_distree 2: ( 3: id number, 4: name varchar2(300), 5: pid number 6: ) 7: / 8:…
查询一个机构下所辖机构: select * from t00_organ t start with t.organkey=#uporgankey# connect by prior t.organkey=t.uporgankey ;…
prior一侧是父节点 另一侧是子节点 --查询region_id等于4519的节点下面的所有子节点 查找出给定节点的所有子节点 SELECT sr.* FROM spc_region sr where sr.delete_state = 0 start with sr.region_id = '4519' connect by prior sr.region_id = sr.super_region_id --查询region_id等于4519的节点上面的所有父节点 查找出给定节点的所有父节点…
需求:找出代理商中没有挂商家的代理商 简单SQL如下: select * from t_proxy tp where tp.id not in (SELECT tp.id as p_id FROM t_proxy tp start with tp.id in (select distinct tm.proxy_id from t_merchant tm where tm.proxy_id is not null) connect by prior tp.parent_id = tp.id)…
create or replace function fn_DeptWholeName2(objectid in number) return nvarchar2 is wholename nvarchar2(500); beginselect to_char(replace(wm_concat(OBJNAME),',','.'))a into wholename from (select * from v_organddept2 ostart with o.objid=objectidconn…
1:什么是rownum, rownum的生成, rownum相关的符号操作 Rownum是oracle生成结果集时得到的一个伪列, 按照读出行的顺序, 第一条rownum=1, 第二条=2. 对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<.<=.!=),并非说用>,>=,=,between..and 时会提示SQL语法错误,而是经常是查不出一条记录来,还会出现似乎是莫名其妙的结果来,其实您只要理…