欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

求一条查询层次结构的orcal 查询语句~解决办法

更新时间: 2014-01-05 02:12:03 责任编辑: Author_N1

 

求一条查询层次结构的ORCAL 查询语句~~~~~~
测试表创建语句:
CREATE TABLE TEST_QUERY
(
       ID VARCHAR2(10),--ID
       PID VARCHAR2(10),----父文件夹ID
       NAME VARCHAR2(100),----文件夹名称
       IS_FOLDER NUMBER(1)--  1:文件夹,0:文件
)
INSERT INTO TEST_QUERY VALUES('0000','0','A',1);
INSERT INTO TEST_QUERY VALUES('0001','0000','A01',1);
INSERT INTO TEST_QUERY VALUES('0002','0000','A02',1);
INSERT INTO TEST_QUERY VALUES('0003','0000','A03',1);
INSERT INTO TEST_QUERY VALUES('0007','0003','A03-01',0);
INSERT INTO TEST_QUERY VALUES('0008','0003','A03-02',0);
INSERT INTO TEST_QUERY VALUES('0009','0003','A03-03',0);
INSERT INTO TEST_QUERY VALUES('0004','0000','A04',0);
INSERT INTO TEST_QUERY VALUES('0005','0000','A05',0);
INSERT INTO TEST_QUERY VALUES('0006','0000','A06',0);
INSERT INTO TEST_QUERY VALUES('0010','0006','A06-01',0);
INSERT INTO TEST_QUERY VALUES('0011','0006','A06-02',0);
INSERT INTO TEST_QUERY VALUES('0012','0006','A06-03',1);
INSERT INTO TEST_QUERY VALUES('0013','0012','A06-03-01',0);
INSERT INTO TEST_QUERY VALUES('0014','0012','A06-03-02',0);
INSERT INTO TEST_QUERY VALUES('0015','0012','A06-03-03',0);

情景:不知道一个文件夹里面有多少个文件 和多少个文件夹
求查询的语句实现如下功能:
输入一个父ID,然后就把他下面的所有文件和文件夹的层次关系全部查询出来,得到类似于下面的结果
ID,  PID    NAME   IS_FOLDER   LEVEL
0000  0      A      1           1
0001  0000   A01    1           2
0002  0000   A02    1           2
0003  0000   A03    1           2
0007  0003   A03-01 0           3
………………

这个用下面的语句实现出来了:
SELECT TEST_QUERY.*,LEVEL
FROM TEST_QUERY 
where 1=1
START WITH TEST_QUERY.PID = '0' 
CONNECT BY PRIOR TEST_QUERY.ID = TEST_QUERY.PID

但是如果我想要0003下面的文件夹和文件信息,就查不出来了
在where后面加PID条件 或者 START WITH 后面的PID改成0003都不行
请高手帮帮忙,有其他的办法吗

比如给的条件PID是0006,那么想要的结果就是
ID,  PID    NAME   IS_FOLDER   LEVEL
0006  0000   A06       1           1
0010  0006   A06-01    0           2
0011  0006   A06-02    0           2
0012  0006   A06-03    1           2
0013  0012   A03-03-01 0           3
0014  0012   A03-03-02 0           3
0015  0012   A03-03-03 0           3

--参考方法--
引用:
测试表创建语句:
CREATE TABLE TEST_QUERY
(
       ID VARCHAR2(10),--ID
       PID VARCHAR2(10),----父文件夹ID
       NAME VARCHAR2(100),----文件夹名称
       IS_FOLDER NUMBER(1)--  1:文件夹,0:文件
)
INSERT INTO TEST_QUERY VALUES('0000','0','A',1);
INSERT INTO TEST_QUERY VALUES('0001','0000','A01',1);
INSERT INTO TEST_QUERY VALUES('0002','0000','A02',1);
INSERT INTO TEST_QUERY VALUES('0003','0000','A03',1);
INSERT INTO TEST_QUERY VALUES('0007','0003','A03-01',0);
INSERT INTO TEST_QUERY VALUES('0008','0003','A03-02',0);
INSERT INTO TEST_QUERY VALUES('0009','0003','A03-03',0);
INSERT INTO TEST_QUERY VALUES('0004','0000','A04',0);
INSERT INTO TEST_QUERY VALUES('0005','0000','A05',0);
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:12:03
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/6881/
本文WWW.DOC100.NET DOC100.NET版权所有。