oracle一条语句递归查询父子关系

来源:互联网 发布:优酷播放量 淘宝 编辑:程序博客网 时间:2024/05/20 11:26

oracle一条语句递归查询父子关系

分类: 数据库 1318人阅读 评论(0) 收藏 举报
oracle递归

1  建表:

[sql] view plaincopy
  1. CREATE TABLE test_tree (  
  2.   test_id   INT  NOT NULL,  
  3.   pid       INT,  
  4.   test_val  VARCHAR(10),  
  5.   PRIMARY KEY (test_id)  
  6. );  
  7. INSERT INTO test_tree VALUES(1, 0,   '.NET');  
  8. INSERT INTO test_tree VALUES(2, 1,      'C#');  
  9. INSERT INTO test_tree VALUES(3, 1,      'J#');  
  10. INSERT INTO test_tree VALUES(4, 1,      'ASP.NET');  
  11. INSERT INTO test_tree VALUES(5, 1,      'VB.NET');  
  12. INSERT INTO test_tree VALUES(6, 0,   'J2EE');  
  13. INSERT INTO test_tree VALUES(7, 6,      'EJB');  
  14. INSERT INTO test_tree VALUES(8, 6,      'Servlet');  
  15. INSERT INTO test_tree VALUES(9, 6,      'JSP');  
  16. INSERT INTO test_tree VALUES(10, 0,  'Database');  
  17. INSERT INTO test_tree VALUES(11, 10,    'DB2');  
  18. INSERT INTO test_tree VALUES(12, 10,    'MySQL');  
  19. INSERT INTO test_tree VALUES(13, 10,    'Oracle');  
  20. INSERT INTO test_tree VALUES(14, 10,    'SQL Server');  
  21. INSERT INTO test_tree VALUES(15, 13,    'PL/SQL');  
  22. INSERT INTO test_tree VALUES(16, 15,    'Function');  
  23. INSERT INTO test_tree VALUES(17, 15,    'Procedure');  
  24. INSERT INTO test_tree VALUES(18, 15,    'Package');  
  25. INSERT INTO test_tree VALUES(19, 15,    'Cursor');  
  26. INSERT INTO test_tree VALUES(20, 14,    'T-SQL');  
使用 START WITH  CONNECT BY 语句实现树状查询
使用 SYS_CONNECT_BY_PATH  函数,获取节点的全路径.
COLUMN "FullPath" 
 
 
2:查询语句
[sql] view plaincopy
  1. SELECT  
  2.   LEVEL,  
  3.   test_id,  
  4.   test_val,  
  5.   SYS_CONNECT_BY_PATH(test_val, '\'AS "FullPath"  
  6. FROM  
  7.   test_tree  
  8. START WITH  
  9.   pid =0  
  10. CONNECT BY PRIOR test_id = pid  
  11. ORDER SIBLINGS BY test_val;  
[sql] view plaincopy
  1.      LEVEL    TEST_ID TEST_VAL             FullPath  
  2. ---------- ---------- -------------------- -----------------------------------  
  3.          1          1 .NET                 \.NET  
  4.          2          4 ASP.NET              \.NET\ASP.NET  
  5.          2          2 C#                   \.NET\C#  
  6.          2          3 J#                   \.NET\J#  
  7.          2          5 VB.NET               \.NET\VB.NET  
  8.          1         10 Database             \Database  
  9.          2         11 DB2                  \Database\DB2  
  10.          2         12 MySQL                \Database\MySQL  
  11.          2         13 Oracle               \Database\Oracle  
  12.          3         15 PL/SQL               \Database\Oracle\PL/SQL  
  13.          4         19 Cursor               \Database\Oracle\PL/SQL\Cursor  
  14.      LEVEL    TEST_ID TEST_VAL             FullPath  
  15. ---------- ---------- -------------------- -----------------------------------  
  16.          4         16 Function             \Database\Oracle\PL/SQL\Function  
  17.          4         18 Package              \Database\Oracle\PL/SQL\Package  
  18.          4         17 Procedure            \Database\Oracle\PL/SQL\Procedure  
  19.          2         14 SQL Server           \Database\SQL Server  
  20.          3         20 T-SQL                \Database\SQL Server\T-SQL  
  21.          1          6 J2EE                 \J2EE  
  22.          2          7 EJB                  \J2EE\EJB  
  23.          2          9 JSP                  \J2EE\JSP  
  24.          2          8 Servlet              \J2EE\Servlet  
0 0
原创粉丝点击