有如下一棵树:
root
|_ Child 1
|_ Child 1.1
|_ Child 1.2
|_ Child 2
|_ Child 2.1
|_ Child 2.2
也可以写成以下结构:
___________________________________________________________________
| Root |
| ____________________________ ____________________________ |
| | Child 1 | | Child 2 | |
| | __________ _________ | | __________ _________ | |
| | | C 1.1 | | C 1.2 | | | | C 2.1 | | C 2.2 | | |
1 2 3_________4 5________6 7 8 9_________10 11_______12 13 14
| |___________________________| |___________________________| |
|___________________________________________________________________|
数字代表左右边界,数据库中表的结构为:
id | parent_id | lft | rgt | data
1 | | 1 | 14 | root
2 | 1 | 2 | 7 | Child 1
3 | 2 | 3 | 4 | Child 1.1
4 | 2 | 5 | 6 | Child 1.2
5 | 1 | 8 | 13 | Child 2
6 | 5 | 9 | 10 | Child 2.1
7 | 5 | 11 | 12 | Child 2.2
选出一个父结点parent的所有孩子:
SELECT * FROM table_name WHERE lft > parent.lft AND lft < parent.rgt
如选出结点Child 1的所有子结点:
SELECT * FROM table_name WHERE lft > 2 AND lft < 7
结果为:
id | parent_id | lft | rgt | data
3 | 2 | 3 | 4 | Child 1.1
4 | 2 | 5 | 6 | Child 1.2
计算一个结点的孩子的数目:
(right - left - 1)/2
选出node结点和它所有的父结点:
SELECT * FROM table_name WHERE node.lft BETWEEN lft AND rgt
如选出结点Child 1.2和它所有的父结点:
SELECT * FROM tabla_name WHERE 5 BETWEEN lft AND rgt
结果为:
id | parent_id | lft | rgt | data
1 | | 1 | 14 | root
2 | 1 | 2 | 7 | Child 1
4 | 2 | 5 | 6 | Child 1.2
这样比递归查询要快多了。
注意:left和right是数据中的保留字
分享到:
相关推荐
- 配置:在模型中添加`acts_as_better_nested_set`,并可自定义字段,如`left_column_name: :lft, right_column_name: :rgt`。 - 常用操作: - 插入节点:`node.insert_at(position)`,其中position可以是其他...
要使用awesome_nested_set您的模型需要具有3个字段: lft , rgt和parent_id 。 这些字段的名称是可配置的。 您还可以具有可选字段: depth和children_count 。 这些字段是可配置的。 请注意, c
在Web开发中,特别是在使用RESTful API时,处理复杂的嵌套数据结构是一个常见的挑战。这个库提供了一种方便的方式来处理这些嵌套的数据模型,使得开发者可以更轻松地构建复杂的数据表单。 首先,我们需要理解Django...
`drf_nested_forms`是专门为Django REST Framework设计的一个扩展库,它允许开发者在序列化器(serializers)中处理嵌套的表单数据。在DRF中,序列化器用于将Python对象转换为JSON或其他可序列化的格式,同时也用于...
`drf_nested_routers`是Python中用于Django REST Framework(DRF)的一个扩展库,它提供了更高级别的路由系统,支持嵌套的路由器结构。这个`.whl`文件是Python的预编译轮子包,它包含了库的源码和其他必要文件,可以...
**PyPI 官网下载 | drf_nested_resources-1.1.dev0-py3-none-any.whl** 在Python的世界里,PyPI(Python Package Index)是最重要的软件仓库,它为开发者提供了一个平台来发布和分享他们的开源Python项目。`drf_...
与和awesome_nested_set一起使用。 奖励功能: 对带有rails_admin_toggleable的已enabled列的特殊情况支持 cover和image栏的特殊情况支持 安装 将此行添加到应用程序的Gemfile中: gem 'rails_admin_nested_set...
`drf_nested_forms` 是一个专为Django REST Framework设计的库,它的主要目标是处理和验证嵌套的表单数据。在这款库的0.2.1版本中,我们可以期待它为Django REST应用带来更高效的数据处理能力。 Django REST ...
蒙古样嵌套集 Mongoid嵌套集是Mongoid的嵌套集模式的实现。...要开始使用Mongoid嵌套集合,只是声明acts_as_nested_set您的手机型号: class Category include Mongoid::Document acts_as_nested
这种数据结构在各种算法和问题中都有应用,如时间序列分析、数据索引和空间数据管理。 该库的版本号为0.2.0,这通常表示它仍处于早期开发阶段,可能存在一些未解决的问题或限制,但已经具备了一定的功能。.tar.gz...
嵌套阵列DOA估计matlab例程,基于Nested Arrays A Novel Approach to Array Processing With Enhanced Degrees of Freedom。
`as_nested_set`常用于构建分类系统、菜单结构、组织架构等场景,因为它能够提供快速的遍历和定位功能。例如,在电商网站上,产品分类就可以用嵌套集模型来维护。 总结,`as_nested_set`是Ecto库的一个强大补充,...
标题中的"xia__nested_class.rar_SWT"提示我们这个压缩包包含的是一个使用SWT实现的嵌套类示例,可能是一个Eclipse插件或独立应用。 SWT是JFace和RCP(Rich Client Platform)的基础,它们都是Eclipse框架的重要...
extended_nested_scroll_view 语言:| NestedScrollView:扩展的嵌套滚动视图,可解决以下问题。 1. 2. 3.拉动刷新不起作用。 4.在NestedScrollView的主体中不使用ScrollController 第2步 NestedScrollView拉动...
通过使用nested array,程序员可以更自然地映射现实世界的问题到代码中,使得代码更加清晰且易于理解。 在"Enhanced Degrees of Freedom"这个点上,这可能指的是nested array提供的灵活性。在处理数据时,可以独立...
资源来自pypi官网。 资源全名:drf_nested_routers-0.92-py2.py3-none-any.whl
资源分类:Python库 所属语言:Python 资源全名:drf_nested_decorator-0.3-py2-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059