case 1:with a as
(select aa.* from vw_x_dvfile aa join vw_x_dvtype_all bb on aa.dvid=bb.dvid
and bb.dvtpid in (select ddtid from dm_dvtype connect by ddtpid=prior ddtid start with ddtid='10'))
select b.* from a aa join vw_x_dvfile b on aa.dvid=b.dvid
where level>1
connect by b.dvpid=prior b.dvid
start with b.dvid=aa.dvid and not exists(select 1 from a where topdvid=aa.topdvid and llevel<aa.llevel)
order by b.topdvid,b.llevel,b.dvid子查询和结果都有记录 //子查询a 数据来源于 vw_x_dvfile和输出结果所用视图一致,且所有数据都是有层次结构的
case 2: with a as
(select aa.* from vw_x_dvfile aa where
(dvmemo like '工%' or dvname like '工%' or dvusepsn like '工%' or invname like '工%' or dvmanid like '工%') )
select b.* from a aa join vw_x_dvfile b on aa.dvid=b.dvid
where level>1
connect by b.dvpid=prior b.dvid
start with b.dvid=aa.dvid
and not exists(select 1 from a where topdvid=aa.topdvid and llevel<aa.llevel)
order by b.topdvid,b.llevel,b.dvid未有记录输出,子查询有记录,将level>1去除即可显示子查询记录,也就是子查询的条件好象用到了主条件上这事情我觉得怪异,请求帮助
(select aa.* from vw_x_dvfile aa join vw_x_dvtype_all bb on aa.dvid=bb.dvid
and bb.dvtpid in (select ddtid from dm_dvtype connect by ddtpid=prior ddtid start with ddtid='10'))
select b.* from a aa join vw_x_dvfile b on aa.dvid=b.dvid
where level>1
connect by b.dvpid=prior b.dvid
start with b.dvid=aa.dvid and not exists(select 1 from a where topdvid=aa.topdvid and llevel<aa.llevel)
order by b.topdvid,b.llevel,b.dvid子查询和结果都有记录 //子查询a 数据来源于 vw_x_dvfile和输出结果所用视图一致,且所有数据都是有层次结构的
case 2: with a as
(select aa.* from vw_x_dvfile aa where
(dvmemo like '工%' or dvname like '工%' or dvusepsn like '工%' or invname like '工%' or dvmanid like '工%') )
select b.* from a aa join vw_x_dvfile b on aa.dvid=b.dvid
where level>1
connect by b.dvpid=prior b.dvid
start with b.dvid=aa.dvid
and not exists(select 1 from a where topdvid=aa.topdvid and llevel<aa.llevel)
order by b.topdvid,b.llevel,b.dvid未有记录输出,子查询有记录,将level>1去除即可显示子查询记录,也就是子查询的条件好象用到了主条件上这事情我觉得怪异,请求帮助
解决方案 »
- 求解答function的问题
- 高手们都来看看GATHER_STATS_JOB表搜集任务问题吧
- 请问在pro*c中该怎样定义变量类型才能正确传递一个较长的数据(10-20)给存储过程?
- 在Linux8.0的X下运行dbassist没有反应,是什么原因?
- 概要文件中的空闲时间不起作用,还是我理解的不对,请教?
- 急!新手询问:如何实现两台机器上两个数据库的自动刷新?
- 外行请教——关于数据库的导入导出
- 请问用ASP怎么取出ORACLE 中的序列值?
- 数据库链接问题
- Oracle行转列的问题,年汇总列、年-月汇总列同时存在,求解答
- pl/sql developer中建立sql server的链接
- 如何统计专业排名前十位
0000000001 0000000001 1 1001A110000000000V96 工控机 研华 IPC-610H PIV2.8/512MDDR/80GHDD/52XCD/网卡/键盘/鼠标 GK001 工业控制机 10
0000000002 0000000001 2 1001A110000000000V96 电脑主板 联想661FX-M7 主板 0000000001 10
0000000004 0000000001 2 1001A110000000000V96 硬盘 80G 硬盘 0000000001 10
0000000003 0000000001 3 1001A110000000000VQJ CPU风扇 酷冷至尊 CPU 0000000002 10
0000000006 0000000006 1 1001A110000000000V96 工控机 研华 IPC-610H PIV2.8/512MDDR/80GHDD/52XCD/网卡/键盘/鼠标 GK002 工业控制机 10
0000000007 0000000006 2 1001A110000000000V96 硬盘 80G 硬盘 0000000006 10
0000000008 0000000006 2 1001A110000000000V96 电脑主板 联想661FX-M7 主板 0000000006 10
0000000009 0000000006 3 1001A110000000000VQJ CPU风扇 酷冷至尊 CPU 0000000008 10
0000000012 0000000012 1 1001A110000000000VQM 工控机 研华 IPC-610H PIV2.8/512MDDR/80GHDD/52XCD/网卡/键盘/鼠标 GK003 工业控制机 10
0000000005 0000000012 2 1001A110000000000V96 硬盘 80G 硬盘 0000000012 10
0000000010 0000000012 2 1001A110000000000VQM 电脑主板 联想661FX-M7 主板 0000000012 10
0000000011 0000000012 3 1001A110000000000VQM CPU风扇 酷冷至尊 CPU 0000000010 10
0000000013 0000000013 1 1001A110000000000VQR 防水防尘防震高顶灯 金卤灯400W? Z1 测试设备 1004
0000000014 0000000014 1 1001A110000000000V96 硬盘 80G 硬盘 10
0000000015 0000000015 1 1001A110000000000VQJ 工控机 研华 IPC-610H PIV2.8/512MDDR/80GHDD/52XCD/网卡/键盘/鼠标 GK003 工业控制机 10
0000000016 0000000015 2 1001A110000000000VQM 电脑主板 联想661FX-M7 主板 0000000015 10
0000000018 0000000015 2 1001A110000000000V96 硬盘 80G 硬盘 0000000015 10
0000000017 0000000015 3 1001A110000000000VQM CPU风扇 酷冷至尊 CPU 0000000016 10
0000000019 0000000019 1 1001A110000000000V96 硬盘 80G 硬盘 10
0000000020 0000000020 1 电脑 HP dx7500MT NS039PA 自动化设备 10
0000000021 0000000020 2 1001A110000000000VQL 电脑主板 联想661FX-M7 电脑主板 0000000020 10
as
select a.*,--设备基础文件
connect_by_root dvid as topdvid,
level as llevel,
b.invname,b.invcode,
c.dainame,
d.ddaname,
e.ddtname,
h.psnname dvusepsnname,i.deptname dvusedeptname,j.unitname dvusecorpname,
o.psnname dvmanpsnname,p.deptname dvmandeptname,q.unitname dvmancorpname
from dm_dvfile a
join bd_invbasdoc b on a.dvinvid=b.pk_invbasdoc
left join dm_dvasmif c on a.dvif=c.daiid
left join dm_dvasm d on a.dvasmid=d.ddaid
join dm_dvtype e on a.dvtpid=e.ddtid
left join bd_psndoc h on a.dvusepsn=h.pk_psndoc
left join bd_psndoc o on a.dvmanpsn=o.pk_psndoc
left join bd_deptdoc i on a.dvusedept=i.pk_deptdoc
left join bd_deptdoc p on a.dvmandept=p.pk_deptdoc
left join bd_corp j on a.dvusecorp=j.pk_corp
left join bd_corp q on a.dvmancorp=q.pk_corp
connect by a.dvpid=prior a.dvid start with dvpid is null
--oracle 10g版本
这个写在外层嵌套看看结果对不