gaojinguan 发表于 2018-9-11 11:26:13

Oracle树查询(start with connect by prior)探究

  oracle树查询的最重要的语法结构是:select…start with…connect by…prior,通过该查询可以将表中的关系以树的形式展示出来。
  1、创建测试表及数据:
  --创建测试表
  CREATE TABLE YAG_TREE(
  T_ID NUMBER(10) NOT NULL, --id
  T_CONTEXT VARCHAR2(20),   --内容

  PARENTID NUMBER(10)       --父>  );
  --创建序列
  CREATE SEQUENCE SEQ_YAG START WITH 1 MAXVALUE 100 INCREMENT BY 1 NOCYCLE CACHE 10;
  --生成父节点数据
  BEGIN
  FOR I IN 1..5 LOOP
  INSERT INTO YAG_TREE VALUES(SEQ_YAG.NEXTVAL,'父节点'||SEQ_YAG.CURRVAL,NULL);
  COMMIT;
  END LOOP;
  END;
  --生成一级节点数据
  BEGIN
  FOR I IN 1..15 LOOP
  IF I 一级节点7               7            一级节点7         1
  3      父节点1--->一级节点7--->二级节点22 22         二级节点22      7
  2      父节点1--->一级节点8               8            一级节点8         1
  3      父节点1--->一级节点8--->二级节点23 23         二级节点23      8
  --树查询2:查询某个节点的所有父节点(即所有先代)
  SELECT * FROM YAG_TREE START WITH T_ID=26 CONNECT BY PRIOR PARENTID=T_ID;
  T_ID      T_CONTEXT         PARENTID
  ----------- -------------------- -----------
  26    二级节点26                11
  11    一级节点11                2
  2   父节点2
  
  学习资源:http://www.cnblogs.com/linjiqin/archive/2013/06/24/3152674.html

页: [1]
查看完整版本: Oracle树查询(start with connect by prior)探究