欢迎投稿

今日深度:

oracle处理父子节点关系,oracle父子节点

oracle处理父子节点关系,oracle父子节点


平时在处理树形结构的关系的时候,是一个很复杂的事情,我们可能通过程序代码去一层一层的遍历父节点或者子节点,这样做的缺点很明显,效率不高而且操作复杂度比较大。而当我们在使用Oracle数据库的时候,我们可以有一种简单解决方法,如下:

 

1.首先创建一张表,保存父子关系

drop table tmp_node;

create table tmp_node(id varchar2(500),p_id varchar2(500));

 

2.向表中插入数据

insert into tmp_node(p_id,id) values(null,1);

insert into tmp_node(p_id,id) values(1,'1-1');

insert into tmp_node(p_id,id) values(1,'1-2');

insert into tmp_node(p_id,id) values('1-1','1-1-1');

insert into tmp_node(p_id,id) values('1-1','1-1-2');

insert into tmp_node(p_id,id) values('1-2','1-2-1');

 

3.查看表中数据

select * from tmp_node;

编号

P_ID

ID

1

 

1

2

1

1-1

3

1

1-2

4

1-1

1-1-1

5

1-1

1-1-2

6

1-2

1-2-1

 

4.创建视图(这一步最重要)

create or replace view tmp_node_view as

select distinct level lvl,connect_by_root(id) leaf_id,t.*

from tmp_node t

connect by prior t.p_id = t.id;

 

5.查看视图数据

select  * form tmp_node_view order by leaf_id,lvl;

编号

LVL

LEAF_ID

ID

P_ID

1

1

1

1

 

2

1

1-1

1-1

1

3

2

1-1

1

 

4

1

1-1-1

1-1-1

1-1

5

2

1-1-1

1-1

1

6

3

1-1-1

1

 

7

1

1-1-2

1-1-2

1-1

8

2

1-1-2

1-1

1

9

3

1-1-2

1

 

10

1

1-2

1-2

1

11

2

1-2

1

 

12

1

1-2-1

1-2-1

1-2

13

2

1-2-1

1-2

1

14

3

1-2-1

1

 

 

6.使用说明

主要使用的leaf_id和id两个字段的值。

字段说明:lvl字段代表节点的深度,leaf_id代表叶节点。p_id父节点id,id节点本生id。

当需要知道一个节点有哪些父节点的时候,只需要根据leaf_id,查询id字段即可:

select * from tmp_node_view where leaf_id = '1-2-1';

编号

LVL

LEAF_ID

ID

P_ID

1

1

1-2-1

1-2-1

1-2

2

3

1-2-1

1

 

3

2

1-2-1

1-2

1

当需要知道一个节点有哪些子节点的时候,只需要根据id查询leaf_id即可:

select * from tmp_node_view where id = '1-2';

编号

LVL

LEAF_ID

ID

P_ID

1

1

1-2

1-2

1

2

2

1-2-1

1-2

1

注意:所有的父节点和子节点的查询,都是包含自身节点的。


jQuery怎判断两个节的关系,如是“父子关系”,“兄弟关系”,"子父关系"

千总,是这样的。jQuery里面的“父子关系”,“兄弟关系“是基于html DOM节点的。

比如你的例子,
<div class="div" id=div1>
<font class="fount1">我是1!</font>
<div id=div2>
<font class="fount2">我是2!</font>
</div>
</div>
div1是html页面body下的一个子节点,而这个div1又有fount1,和div2这两个子节点,fount1和div2是兄弟关系,div2下面还有一个fount2节点 。
你要用jQuery去找什么父节点,子节点,首先要搞清楚这个节点在HTML中是什么关系,然后你才可以用parent(),child()这些方法。

下面是例子
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'test.jsp' starting page</title>
<script type="text/javascript" src="../js/jquery/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
alert($(".fount1").parents(".div").html());
alert($(".fount2").parents(".div").html());
});
</script>

</head>

<body>
<div class="div">
<font class="fount1">我是1!</font>
<div>
<font class="fount2">我是2!</font>
</div>
</div>
</body>
</html>...余下全文>>
 

oracle 父子表关联,A,B父子表关系,1A => 多B 怎把B表相关联多条数据中的某一列并入A表成为一条记录

以oracle中的scott用户下的部门表和员工表为例。
SELECT * FROM EMP;
SELECT * FROM DEPT;

SELECT D.DEPTNO, D.DNAME, D.LOC, WMSYS.WM_CONCAT(E.EMPNO)
FROM DEPT D, EMP E
WHERE D.DEPTNO = E.DEPTNO
GROUP BY D.DEPTNO, D.DNAME, D.LOC;
可以将员工编号合并为一条,其中e.empno可以替换成其他字段。
有什么不明白再接着问。
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/2902.html NewsArticle oracle处理父子节点关系,oracle父子节点 平时在处理树形结构的关系的时候,是一个很复杂的事情,我们可能通过程序代码去一层一层的遍历父节点或者子节点,这样做的缺点很明显,效...
相关文章
    暂无相关文章
评论暂时关闭