问题标签 [hierarchical-trees]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - Doctrine 1.2 NestedSet 属性和来自祖先的关系继承
我有一个 Doctrine 1.2 项目,我正在重构它,以便使用具有多个根的教义行为 NestedSet 为表提供树结构。
我需要的是从祖先到后代的继承(不是 OO 常识),其中后代从缺少自己的属性的最近祖先那里继承属性。同样的事情也会发生在关系上。
让我用一个例子来解释:
我想要执行的是:
- 检索某个类别是否处于活动状态,这意味着验证是否所有祖先都处于活动状态
- 如果给定类别缺少另一个属性,则从存在的最近祖先那里继承它
- 检索给定类别的标签;如果标签丢失,则从最近的祖先处检索它们
为了最大限度地提高速度和灵活性,您建议采用什么最佳方法?
sql - SQL 或 NoSQL 数据库中的许多小树结构
我想将信息存储在数据库中许多不同树的节点上。
首先将有超过 20000 个节点在 500 棵树之间共享,每个节点将有 5 个数字属性。一旦构建,每个节点都需要引用它的所有直接子节点,而不需要引用其他节点。
我需要在初始化时在内存中构建所有树,并在程序进入停机时间后更新/添加节点(可能每隔一小时左右,尽管越多越好)。
我查看了 sql 邻接模型,它似乎构建每个表需要很长时间(必须进行太多的数据库调用),嵌套集模型是一种可能性,但扩展树更复杂,这是会发生很多,它增加了数据库的复杂性,因为我认为这可能是一个非常基本的结构和查询集。
我也研究过 MongoDb,但它似乎更适合 JSON 类型的对象,而且我正在使用 java,并且可能会过度杀戮,而且 HBase 肯定会过度杀戮(优点是如果节点数量变得巨大,它可能会出现很有用,这对未来来说是一种可能性,我可以增加对数据库的写入时间,这也是一个优势)
有人对我如何解决这个问题有任何建议吗?
NoSql dbs 是否矫枉过正?他们在存储树结构方面做得更好吗?将它们与 sql 数据库一起使用是不好的做法吗?
mysql - 层次树模型
我正在 MySQL 中寻找一个层次树模型,它在以下要求下表现最好:
- 多个根节点(我的意思是很多)
- 深度有限(最多 4 级)
- 在结构内排序的兄弟姐妹
- 快速使用(选择)
- 不需要快速管理(创建、更新、删除)
- 有一个很好的 PHP API 来管理和使用
我经常使用嵌套集,但在这种情况下,多个根节点让我担心。另一方面,邻接表可能太简单了。
我已经看到 Drupal 如何处理其菜单(路径模型???),但无法找到有关这种方法的优缺点的大量信息——以及是否有易于访问的 API 信息。不过看起来很有趣。
任何人有任何其他建议/参考?
oracle - 需要一个 Oracle 分层查询,该查询仅返回子项与搜索字符串匹配的记录的完整树
这是此查询的完整示例数据集,没有修剪任何节点与搜索字符串匹配的树:
如果用户搜索“foo”,我需要返回以下内容:
实际情况稍微复杂一些(即我想要返回的树中的三个级别),但这抓住了问题。在英语中,返回与搜索字符串匹配的节点的祖先树,该搜索字符串从文本列上的匹配节点开始,并返回所有祖先。
我是 Oracle 的新手(至少最近是这样)并尝试添加到 CONNECT BY 子句但没有任何成功 - 总是返回以下内容:
PS - 关于此的 oracle 文档和示例暗示 CONNECT_BY_ROOT 将捕获祖先,但它似乎所做的只是返回顶级(ROOT)值。
php - PostgreSQL 分层,类别树
环境:postgresql-8.4
我正在尝试构建类别树。基本上我期待最终输出,例如:
例如:表结构为
p>到目前为止,我已经得到了这个,但没有工作。任何帮助将不胜感激:
来自数据库的样本
php - 如何从子ID获取父ID(根父)
可能重复:
函数只返回一次,为什么?
我的数据库结构看起来像
我需要一个将id作为参数的父(即父=0)的函数例如.. get_parent(6)==returns 1 我做了一些研究,发现了这个问题
我试着做这个功能
我打电话
但是我的方法是错误的。我哪里做错了?
sql - 分层查询:获取每个节点的直接子节点数
我是分层查询的新手,我已经阅读了大部分关于它的帖子。
我有一个想改进的查询。
我的场景是这样的:
表数据如下:
我希望结果是这样的:
我编写了以下查询,它给出了除 DIRECT_CHILDREN_COUNT 之外的所有列
关于如何获取节点的所有子节点(不仅仅是直接子节点)的计数有很多帖子,这些不适用于我,因为
1.我只想要直接的孩子数。
2.如果可能的话,我想在不使用joins的情况下实现这一点。
我不知道如何将直接子项计为每条记录的列值。无论如何我可以使用分层查询获得 DIRECT_CHILDREN_COUNT 吗?
php - 使用 PHP 展开和折叠树形菜单
我有以下数组:
我需要如下树形菜单:(仅使用 PHP)
点击后展开如下:
一旦我们点击另一个第一级项目,其相应的子节点将被展开,相同的格式应该被保留。
php - MySQL - 以分层方式连接标签
我有一个JOIN
具有以下结构的临时表(这很重要,因为我不能在同一个查询中打开它两次):
使用一些示例数据:
我需要的
只有当报告具有用户想要的所有所需类别时,我才需要value_id
根据类别进行连接。
因此,在给定的示例中,如果用户说“我想查看category_id
1、2 和 3 的报告”,我需要显示以下内容:
如您所见,ID 为 1 的报告没有类别 1,它必须从结果集中隐藏,而 ID 为 2 的报告有两个类别 2 的值,它必须显示两个结果,每个组合树一个.
如果它有三个值category_id = 3
,那么我应该得到它的所有可能的树组合。
我也在使用 PHP,因此解析数据并使用它的解决方案也可能是正确的。
我一直在尝试使用GROUP_CONCAT()
,HAVING COUNT(category_id)
和ORDER BY FIELD(category_id)
,但由于无法使用 JOIN,我无法让它出现在每种可能的组合中。
感谢大家的帮助和时间!