子树查的多,现在遇到父亲树,谁曾经也遇到这样的树?

lovepapa 2004-08-12 09:32:27
A
/ \
B C
/ \ / \
D E F G
\
H
数据表是这样的:parentTabel
id, name ,parentId
--------------------
1 A
2 B 1
3 C 1
4 D 2
5 E 2
6 F 3
7 G 3
8 H 7

我要找出 D 和 H 的父亲树,
我用的是:
select distinct id,Name,parentId,level from parenttable
start with id in (4,8) connect by prior parentId = id
查出来会有两个A,一个等级是level =3,一个是 level = 4
我也知道因为是以子节点开始的,查出来的父节点的level是不同的,

谁知道怎样把 D 的父亲和 H的父亲树合并起来??最后查处一棵这样的树:
A
/ \
B C
/ \
D G
\
H
...全文
107 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ks9960 2004-08-13
  • 打赏
  • 举报
回复
有什么用吗?
mycore 2004-08-13
  • 打赏
  • 举报
回复
不知道,帮你顶
北极海hein 2004-08-13
  • 打赏
  • 举报
回复
Anders_xue(小K):
你这是由父亲找儿子.
北极海hein 2004-08-13
  • 打赏
  • 举报
回复
以下代码测试通过.
建议你把
select distinct id,Name,parentId,LEVEL AS lev from parenttable
start with id in (4,8) connect by prior parentId = id
做成一 View 增强可读性.
--==============================

SELECT * FROM
( select distinct id,Name,parentId,LEVEL AS lev from parenttable
start with id in (4,8) connect by prior parentId = id
)
WHERE lev =

(SELECT MAX(a.lev) maxlev FROM
(
select distinct id,Name,parentId,LEVEL AS lev from parenttable
start with id in (4,8) connect by prior parentId = id
) a
WHERE a.parentid IS NULL
GROUP BY id
)
UNION
SELECT * FROM
(
select distinct id,Name,parentId,LEVEL AS lev from parenttable
start with id in (4,8) connect by prior parentId = id
) b
WHERE b.parentid IS NOT NULL
beckhambobo 2004-08-13
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=170559
Anders_xue 2004-08-13
  • 打赏
  • 举报
回复
select distinct id,Name,parentId,level from parenttable
start with id in (4,8) connect by prior id=parentId
试一下看看
lovepapa 2004-08-12
  • 打赏
  • 举报
回复
把表结构列出来,好让大家调试使用:

CREATE TABLE PARENTTABLE
(
ID NUMBER,
NAME VARCHAR2(200),
PARENTID NUMBER
);
INSERT INTO PARENTTABLE ( ID, NAME, PARENTID ) VALUES ( 1, 'A', NULL);
INSERT INTO PARENTTABLE ( ID, NAME, PARENTID ) VALUES ( 2, 'B', 1);
INSERT INTO PARENTTABLE ( ID, NAME, PARENTID ) VALUES ( 3, 'C', 1);
INSERT INTO PARENTTABLE ( ID, NAME, PARENTID ) VALUES ( 4, 'D', 2);
INSERT INTO PARENTTABLE ( ID, NAME, PARENTID ) VALUES ( 5, 'E', 2);
INSERT INTO PARENTTABLE ( ID, NAME, PARENTID ) VALUES ( 6, 'F', 3);
INSERT INTO PARENTTABLE ( ID, NAME, PARENTID ) VALUES ( 7, 'G', 3);
INSERT INTO PARENTTABLE ( ID, NAME, PARENTID ) VALUES ( 8, 'H', 7);
COMMIT;
lovepapa 2004-08-12
  • 打赏
  • 举报
回复
搞了很久,搞不出来,现在头都大了!!

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧