问题标签 [adjacency-list-model]

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.

0 投票
1 回答
195 浏览

php - 从邻接模型中对非嵌套数据数组进行排序

我从使用邻接模型构建主题层次结构的数据库表中获取了一组数据。每条记录包含以下字段:

  • 'id' - 一个唯一的 AI id。
  • 'name' - 显示名称。
  • 'parent_id' - 父主题的 id(对于根主题可以为空)

如您所料,该数组来自未嵌套并按 id 排序的数据库。'id' 字段是随机的和随意的,不能依靠它来产生有用的订单。我正在寻找一种使用 parent_id 对数组进行排序的方法,以便它具有正确的邻接顺序,但最终结果不会嵌套到子数组中。该列表如下所示:

  • 根主题A
  • 主题1
  • 主题2
  • ATopic2 的子 1
  • ATopic2 的 Child2
  • 主题3
  • 根主题B
  • BTopic1
  • BTopic2
  • 等等

任何帮助或指向示例的指针(即使是不同的语言)将不胜感激。

0 投票
1 回答
1990 浏览

mysql - 使用 MySQL 中的邻接模型抓取父节点的子节点

我对我的 MySQL 表的当前模型有困难,即我似乎无法正确查询特定父节点的所有子节点。正如标题所述,我使用的是邻接模型。

问题是我在网上找到的大多数方法要么查询所有叶节点,要么选择的不仅仅是我试图抓取的内容。

我关注的第一个教程是在MikeHillyer.com上,他的解决方案是:

问题在于,它查询所有叶节点,而不仅仅是与父节点相关的叶节点。他还建议使用嵌套集模型,我真的不想使用它,因为插入新节点有点困难(我确实意识到它的重要性,我宁愿不必求助于它)。

我找到的下一个解决方案是幻灯片 53 上的共享幻灯片(从 StackOverflow 上的另一个答案中找到)。这个解决方案应该查询一个节点的直接子节点,只是......这个解决方案似乎对我不起作用。

这是他们的解决方案:

现在,我的表格有点不同,所以我调整了一些代码。我的表格的简短摘录如下:

当我修改上述查询时,我做了以下事情:

这导致所有东西都被查询并绑定在一个表中,是未更改表的两倍(显然不是我想要的)

我很确定我只是对我的查询做错了,所以我只是希望这里有人能纠正我的错误并指出我正确的方向。

我知道使用嵌套集模型应该更容易,但我只是不喜欢该选项,因为难以添加新选项。

0 投票
1 回答
415 浏览

mysql - 站点层次结构的邻接列表模型,如何按此特定顺序检索所有页面?

我必须管理我不是 SQL 专家,也许这个查询真的很简单,但我无法编写它。基本上所有页面都是使用邻接列表模型排列的(我也在跟踪深度):

请注意,位置在同一个父级中是唯一的。

我想要实现的是按 parent 和 position 排序,但父类别应该列在它的孩子之前。这很明显并且不起作用:

结果是第一个表。我需要的是以下内容:

这在 MySQL 中是否可能,不支持递归?

0 投票
0 回答
1337 浏览

mysql - 具有完整树父级的 MySql 邻接列表

我想在本教程之后在 MySql 中使用邻接列表模型: Managing Hierarchical Data in MySQL with query:

我的问题是,即如果查询返回:

如何修改查询以获取此结果数据 + 叶节点 ID (category_id) 的附加列?

1 .ID = ELECTRONICS 的 ID

2 .ID = 电视的 ID

3 .ID = TUBE 的 ID

我想要显示完整的列表树和独立的父母,以及他们的 ID...

0 投票
1 回答
3444 浏览

php - multi level menu from database in codeigniter

I have a table in my database containing all of my database categories, which I need to convert into a multi-level menu. The table structure is below:

Using the functions I have adapted from an online tutorial (here) and hours of research the resulting code will only display the top level (those with a parent id of null). I'm sure it is a problem with the sortMenu function, however, I cannot seem to work it out.

Here is my model function which extracts the data:

Here is the controller which calls the private function from the index function, which, in turn, calls the private create_list function:

This has completely baffled me :S Does anyone have any ideas?

0 投票
2 回答
200 浏览

mysql - mysql self-join修复父不存在时的结果顺序

我有一张名为Taxonomy它的表,其中包含与组织结构有关的所有内容。作为学校示例表的样子

4 种类型,以学年(2014-2015)为例。在它的学校部门下,在它的多个班级下(等级1、2、3等)。

当我需要得到这个时,我运行一个像这样的自连接查询:

它工作正常,除了我得到这么多空值!查询结果示例 mysql结果

如您所见,课程在 year under year 字段中正确显示,

然而在第一行,年份在 Class 字段下(移动了 3 个单元格)。

每当有一个空值时,就会移动。我该如何解决?

多谢

编辑

邻接列表模型的一种变体,我添加了一个名为的额外列type,以便我可以识别任何行的级别,而无需检索整个路径。

表包含学校的结构。例子

在每个新的一年里,他们创造了一个一年的例子“2014-2015”,然后在这一年里创造了学校不同的部门“美国文凭、高中、幼儿园等。”下面是学校的成绩,每个年级都有班级..

例子

这些输入意味着

之后,另一个表将学生链接到班级节点,另一个表将帖子链接到班级等等。

所以这张表基本上包含学校结构。由于年份、部门和年级仅用于组织学校用户“除了他们需要的姓名之外没有其他数据”我决定将所有数据放在一张表中。

它实际上对我来说非常好!(我们与所有部门、学生和班级合作了 4 年,超过 10 万个帖子链接到用户/班级和超过 1 万个用户,到目前为止工作顺利!)

0 投票
0 回答
244 浏览

sqlalchemy - 在 SQL Alchemy 中查找邻接表的后代和祖先

如果我有类此处描述的邻接列表关系Node,我将如何获得descendants该节点的所有内容?所有ancestors这些Node

0 投票
1 回答
13988 浏览

mysql - MySQL分层数据的邻接列表模型与嵌套集模型?

在 MySQL中有两种处理层次结构数据的方法

  1. 邻接表模型
  2. 嵌套集模型

邻接列表模型的一个主要问题是我们需要对每个节点运行一次查询以获取层次结构的路径。

嵌套集模型中不存在这个问题,但是对于每个添加的节点,需要对所有其他的左右值进行MySQL UPDATE

我的分层数据不是静态数据,比如电子商务的产品类别。是按层次顺序不断注册用户。

在我的应用程序中,虽然有很多常量用户注册,但我还需要获取层次结构路径,直到到达层次结构中的第一个节点。

分析我的情况,两种选择中的哪一种最适合我的应用程序?

0 投票
3 回答
1382 浏览

php - MySQL:查找子树的所有叶节点

我有一个存储在 mySQL 表中的类别的树结构category_idparent_id关系。Parent_id = Null对应根节点。

我要做的是获取所有叶节点,并给出节点的 category_id。我已经关注了这篇文章。它讨论了使用以下查询获取所有叶节点:

但我正在尝试获取子树的叶节点。例如:

在此处输入图像描述

在给定节点 3 的上述结构中,结果将是:9、10、7、11、12、13。

我也尝试过这里给出的解决方案:adjacency model , given an id return the leaf nodes。但我无法得到想要的结果。

你能帮我找到解决办法吗?

0 投票
1 回答
670 浏览

laravel - 用户类型的邻接表模型

我的数据库中有相当多的用户类型,到目前为止,唯一不涉及大量表的好选择是使用邻接列表模型。基本上,我的用户首先分为以下类型:企业、个人和管理员。从那里开始是这样的:
在此处输入图像描述

注意:我目前有 3 个级别的用户类型,但这可能会随着时间的推移而改变,具体取决于业务需求。

我所有的用户共享一个公用users表,其中包含电子邮件、密码、名字、姓氏等详细信息。我所有的业务用户都有一个单独的businesses表来存储业务特定数据。businesses用户并不都共享相同的字段,但是由于我只需要为每种不同类型的用户提供几个字段,我认为将所有字段放入一个表中并为我不使用的字段存储 NULL 可能是最好的方法不使用。

现在,我有这个简单的场景。我所有的用户都有一个用户个人资料页面。我的业务用户也有一个业务资料页面。我的业务技术人员必须有另一个专门针对他们的页面。想象一下计算机技术员登录。我希望能够显示个人资料页面、业务资料页面和技术员仪表板的链接。

为了获取用户类型,我设置了模型,以便可以检索“子”或“父”。如果我说:

如何轻松实施一种方法来检查技术人员(以提供技术人员仪表板的链接)并检查企业(以提供业务资料页面链接)?