我现在建立了一棵结构树,
但是存在问题,1级节点下面有2级节点,有的2级节点下有3级节点,有的2级节点下没亦3级节点,现在想
把有3级节点的2级节点放在上部,没有3级节点的2级节点放在下部。
怎么办?
各位请多帮忙。图例1
12
121
122
13
131
132
14
15
...
但是存在问题,1级节点下面有2级节点,有的2级节点下有3级节点,有的2级节点下没亦3级节点,现在想
把有3级节点的2级节点放在上部,没有3级节点的2级节点放在下部。
怎么办?
各位请多帮忙。图例1
12
121
122
13
131
132
14
15
...
解决方案 »
- 关于Oracle数据库,程序包的问题。。
- 千万级数据库表索引无法生效,求解答
- 应该是很简单的问题
- 安装了好几次Oracle92,服务里都没有OracleOraHome92ManagementServer,急?
- oracle里有没有对应于sqlserver里collate那样的东西
- ■■主进程建立的Oracle连接在子进程中的使用的问题![缓冲池、ProC、Unix]
- 如何远程启动oracle数据库?
- 大讨论:分区表的学习
- oracle取最大id+1,用什么sql语句,怎么写?
- clob 问题
- 关于在oracle里面查找某个方案下的所有表名称及某表下所有字段名称等等
- ltrim函数不能剔除左侧的0
union
select * from tb a where a.lv=2 and not exists (select b.code from tb b where b.code like a.code||'%' and b.lv=3)
很直接的一个实现。
如果你的表里面有一个字段标识是否有子节点的话,那样就更容易实现了。
level as part_level from (select * from erp.v_dsgn_prdct_fit_tree_dsp where prdct_id=1034907
and part_lvl=1 order by prnt_id,part_id) t1
start with prnt_id=-1
connect by nocycle prior part_id = prnt_id order by level; 这是我用的语句但是这个只能排出1,2级的关系,而无法分开2级有没有3级
prnt_id 就是parent_id上一级的着急!!!!
code就是你的tree表中的节点标识字段,lv就是你的level字段。
看你的节点是有规律的,子节点由父节点加上某个数构成,那就是说如果第2级有子节点,那么就存在节点表示与之相似的。
修改下我写 的,漏了点东西
select * from erp.v_dsgn_prdct_fit_tree_dsp a where a.level=2 and exists (select b.code from erp.v_dsgn_prdct_fit_tree_dsp b where b.code like a.code||'%' and b.code<>a.code and b.lv=3) order by a.code
union
select * from erp.v_dsgn_prdct_fit_tree_dsp a where a.level=2 and not exists (select b.code from erp.v_dsgn_prdct_fit_tree_dsp b where b.code like a.code||'%' and b.code<>a.code and b.lv=3) order by a.code
select t1.part_blprnt || '-' || part_name as bl_nm, part_id,prnt_id
level as part_level from (select * from erp.v_dsgn_prdct_fit_tree_dsp where prdct_id=1034907
and part_lvl=1 order by prnt_id,part_id) t1
start with prnt_id=-1
connect by nocycle prior part_id = prnt_id order by level;
执行这个语句显示的数据项为
part_id,prnt_id,bl_nm,part_level
part_id表示零件id,prnt_id表示零件的装入id(也就是上一级的part_id),part_level表示等级,bl_nm现实名称。如何 写语句,请指教
select dirindex, fatherindex, RPAD(' ', 2*(LEVEL-1)) || dirname from t_tonedirlib
start with fatherindex = 0
connect by fatherindex = prior dirindex