Oracle sql - 分层查询
Oracle sql - hierarchical query
我正在努力对以下 table 进行分层查询。
CLASSSTRUCTUREID PARENT CLASSIFCATIONID
1688 FLT
1689 1688 ASSET
1690 1688 PMFLT
1691 1688 CM
1692 1691 POSTFAILCM
例如,对于上面的例子,我想得到如下输出
FLT/CM/POSTFAILCM as FLT is the parent of CM and CM is the parent of POSTFAILCM
我使用了以下查询但没有给我所需的输出。我只是想知道我哪里做错了。
SELECT LPAD(' ', 2*level-1)|| SYS_CONNECT_BY_PATH(CLASSIFICATIONID , '/') "Path"
,LEVEL
FROM CLASSSTRUCTURE
START WITH CLASSIFICATIONID = 'PREFAILCM' --TRIED 'FLT' TOO
CONNECT BY PRIOR TO_CHAR(CLASSSTRUCTUREUID) = PARENT
希望对您有所帮助:
SELECT LPAD (' ', 2 * LEVEL - 1) || SYS_CONNECT_BY_PATH (CLASSIFICATIONID, '/') PATH,
LEVEL
FROM CLASSSTRUCTURE
START WITH parent IS NULL
CONNECT BY PRIOR TO_CHAR (CLASSSTRUCTUREID) = PARENT;
使用创建 table :
CREATE TABLE CLASSSTRUCTURE AS
(select 1688 CLASSSTRUCTUREID, NULL PARENT,'FLT' CLASSIFICATIONID FROM DUAL UNION ALL
select 1689 CLASSSTRUCTUREID, 1688 ,'ASSET' FROM DUAL UNION ALL
select 1690 CLASSSTRUCTUREID, 1688 ,'PMFLT' FROM DUAL UNION ALL
select 1691 CLASSSTRUCTUREID, 1688 ,'CM' FROM DUAL UNION ALL
select 1692 CLASSSTRUCTUREID, 1691 ,'POSTFAILCM' FROM DUAL );
我正在努力对以下 table 进行分层查询。
CLASSSTRUCTUREID PARENT CLASSIFCATIONID
1688 FLT
1689 1688 ASSET
1690 1688 PMFLT
1691 1688 CM
1692 1691 POSTFAILCM
例如,对于上面的例子,我想得到如下输出
FLT/CM/POSTFAILCM as FLT is the parent of CM and CM is the parent of POSTFAILCM
我使用了以下查询但没有给我所需的输出。我只是想知道我哪里做错了。
SELECT LPAD(' ', 2*level-1)|| SYS_CONNECT_BY_PATH(CLASSIFICATIONID , '/') "Path"
,LEVEL
FROM CLASSSTRUCTURE
START WITH CLASSIFICATIONID = 'PREFAILCM' --TRIED 'FLT' TOO
CONNECT BY PRIOR TO_CHAR(CLASSSTRUCTUREUID) = PARENT
希望对您有所帮助:
SELECT LPAD (' ', 2 * LEVEL - 1) || SYS_CONNECT_BY_PATH (CLASSIFICATIONID, '/') PATH,
LEVEL
FROM CLASSSTRUCTURE
START WITH parent IS NULL
CONNECT BY PRIOR TO_CHAR (CLASSSTRUCTUREID) = PARENT;
使用创建 table :
CREATE TABLE CLASSSTRUCTURE AS
(select 1688 CLASSSTRUCTUREID, NULL PARENT,'FLT' CLASSIFICATIONID FROM DUAL UNION ALL
select 1689 CLASSSTRUCTUREID, 1688 ,'ASSET' FROM DUAL UNION ALL
select 1690 CLASSSTRUCTUREID, 1688 ,'PMFLT' FROM DUAL UNION ALL
select 1691 CLASSSTRUCTUREID, 1688 ,'CM' FROM DUAL UNION ALL
select 1692 CLASSSTRUCTUREID, 1691 ,'POSTFAILCM' FROM DUAL );