现有一树结构表,结构为
functionId 标识,
functionCode 代号(如ZL001,ZL001001以两位缩写字母开头每一层加三位数字),
functionName 名称,
priority 显示顺序(整数) ,
parentid,父结点标识
现要遍历所有数据以层次结构显示,同层以显示顺序升序
如表中有数据:
'id1','ZL001','功能1',2,0;
'id2','ZL001001','功能2',3,'id1'
'id3','ZL001002','功能3',2,'id1';
'id4','ZL002','功能4',1,0;结果为:
'id4','ZL002','功能4',1,0;
'id1','ZL001','功能1',2,0;
'id3','ZL001002','功能3',2,'id1';
'id2','ZL001001','功能2',3,'id1'
functionId 标识,
functionCode 代号(如ZL001,ZL001001以两位缩写字母开头每一层加三位数字),
functionName 名称,
priority 显示顺序(整数) ,
parentid,父结点标识
现要遍历所有数据以层次结构显示,同层以显示顺序升序
如表中有数据:
'id1','ZL001','功能1',2,0;
'id2','ZL001001','功能2',3,'id1'
'id3','ZL001002','功能3',2,'id1';
'id4','ZL002','功能4',1,0;结果为:
'id4','ZL002','功能4',1,0;
'id1','ZL001','功能1',2,0;
'id3','ZL001002','功能3',2,'id1';
'id2','ZL001001','功能2',3,'id1'
-------- -------- -------------------- ---------- --------
id1 ZL001 功能1 2 0
id2 ZL001001 功能2 3 id1
id3 ZL001002 功能3 2 id1
id4 ZL002 功能4 0 0SQL> select t.*,level from test t
2 start with parentid = '0'
3 connect by parentid = prior functionid
4 order siblings by priority;FUNCTION FUNCTION FUNCTIONNAME PRIORITY PARENTID LEVEL
-------- -------- -------------------- ---------- -------- ----------
id4 ZL002 功能4 0 0 1
id1 ZL001 功能1 2 0 1
id3 ZL001002 功能3 2 id1 2
id2 ZL001001 功能2 3 id1 2
-------- -------------------- ------ ---------- --------
id1 ZL001 功能1 2 0
id2 ZL001001 功能2 3 id1
id3 ZL001002 功能3 2 id1
id5 ZL001001001 功能5 1 id2
id6 ZL001001002 功能6 3 id2
id7 ZL001002003 功能7 2 id3
id8 ZL001002004 功能8 0 id3
id4 ZL002 功能4 0 0已选择8行。SQL> select t.* from test t
2 start with parentid = '0'
3 connect by parentid = prior functionid
4 order by parentid,priority;FUNCTION FUNCTIONCODE FUNCTI PRIORITY PARENTID
-------- -------------------- ------ ---------- --------
id4 ZL002 功能4 0 0
id1 ZL001 功能1 2 0
id3 ZL001002 功能3 2 id1
id2 ZL001001 功能2 3 id1
id5 ZL001001001 功能5 1 id2
id6 ZL001001002 功能6 3 id2
id8 ZL001002004 功能8 0 id3
id7 ZL001002003 功能7 2 id3已选择8行。SQL> select t.* from test t
2 start with parentid = '0'
3 connect by parentid = prior functionid
4 order siblings by priority;FUNCTION FUNCTIONCODE FUNCTI PRIORITY PARENTID
-------- -------------------- ------ ---------- --------
id4 ZL002 功能4 0 0
id1 ZL001 功能1 2 0
id3 ZL001002 功能3 2 id1
id8 ZL001002004 功能8 0 id3
id7 ZL001002003 功能7 2 id3
id2 ZL001001 功能2 3 id1
id5 ZL001001001 功能5 1 id2
id6 ZL001001002 功能6 3 id2已选择8行。
------------------
我用的也是9i版本,是好用的啊
----------------------------
答案是不能的 ,就拿sql server2000来说,要用纯sql语句实现这样的功能是不可能的;而用存储过程,各种数据库也有不同的标准,所以这个问题没有标准sql