目前有个表:层次ID,层次name, 父id
层次id4位编码:比如0001 下一级就是00010001
如何能够查询出这样子编码 名称0001 家用电器
00010001 家用电器-小家电
000100020001 家用电器-小家电-洗衣机
create table T (
CCID varchar2(20) not null,
CCNAME VARCHAR2(100) not null,
fid varchar2(20)
constraint PK_T primary key (CCID)
);
insert into t values('0001', '家用电器', '9999' );
insert into t values('00010001', '小家电', '0001' );
insert into t values('00010002', '大家电', '0001' );
insert into t values('000100020001','洗衣机', '00010002' );
insert into t values('000100020002','平板电视', '00010002' );
insert into t values('000100020003','冰箱', '00010002' );
insert into t values('0002', '手机数码', '9999' );
insert into t values('00020001', '手机通讯', '0002' );
insert into t values('00020002', '手机配件', '0002' );
insert into t values('00020003', '数码配件', '0002' );
insert into t values('0003', '服饰鞋帽', '9999' );
insert into t values('0004', '图书影视', '9999' );
层次id4位编码:比如0001 下一级就是00010001
如何能够查询出这样子编码 名称0001 家用电器
00010001 家用电器-小家电
000100020001 家用电器-小家电-洗衣机
create table T (
CCID varchar2(20) not null,
CCNAME VARCHAR2(100) not null,
fid varchar2(20)
constraint PK_T primary key (CCID)
);
insert into t values('0001', '家用电器', '9999' );
insert into t values('00010001', '小家电', '0001' );
insert into t values('00010002', '大家电', '0001' );
insert into t values('000100020001','洗衣机', '00010002' );
insert into t values('000100020002','平板电视', '00010002' );
insert into t values('000100020003','冰箱', '00010002' );
insert into t values('0002', '手机数码', '9999' );
insert into t values('00020001', '手机通讯', '0002' );
insert into t values('00020002', '手机配件', '0002' );
insert into t values('00020003', '数码配件', '0002' );
insert into t values('0003', '服饰鞋帽', '9999' );
insert into t values('0004', '图书影视', '9999' );
解决方案 »
- the password will expire within 10 days
- 如何利用Object Browser图形化工具提高Oracle开发工作效率(三)数据库管理篇
- 我用函数返回了一个查询字符串,保存在变量v里,怎么才能够执行呢?
- 统计的问题:
- Oracle中嵌套表的问题
- oracle导入、导出的问题?ctxsys方案怎么导出?
- 我在linux.0装oracle 8.1.7,为什么都是乱码/
- 再问级联约束问题(急)
- 我要在数据库里放byte型数据
- 在oracle中如下解决下面的问题(SQL语句的写法)
- INSERT INTO emp SELECT * FROM dept;错哪了呢???
- 比较大的硬盘空间时,内核参数怎么配置比较合理
from(select ccid, decode(connect_by_isleaf,0,prior ccname||ccname,ccname) ccname,fid
from t start with fid ='9999' connect by prior ccid=fid)
start with fid ='9999' connect by prior ccid=fid
Connected as scott
SQL>
SQL> select ccid,ltrim(sys_connect_by_path(ccname,'-'),'-') ccname
2 from t
3 start with fid='9999'
4 connect by prior ccid = fid;
CCID CCNAME
-------------------- --------------------------------------------------------------------------------
0001 家用电器
00010001 家用电器-小家电
00010002 家用电器-大家电
000100020001 家用电器-大家电-洗衣机
000100020002 家用电器-大家电-平板电视
000100020003 家用电器-大家电-冰箱
0002 手机数码
00020001 手机数码-手机通讯
00020002 手机数码-手机配件
00020003 手机数码-数码配件
0003 服饰鞋帽
0004 图书影视
12 rows selected
SQL>