问题标签 [transitive-closure-table]
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.
mysql - 需要关于这个 SQL 闭包表查询的解释
作为对此问题的回应,Bill Karwin 发布了以下查询,以在给定任何特定树节点 ID 的情况下拉回有序子树:
我自己已经在我自己的几个项目中成功地使用了这个查询,但我意识到我并不完全理解这个查询是如何以及为什么工作的。我觉得我对闭包表的设计有一个不错的理解(主要是通过阅读 Karwin 的关于 SQL 处理分层数据的套牌)。尽管如此,我不能“手指追踪”这个查询并解释它是如何构建结果集的。
具体来说,我在理解“treePaths”表(我理解为记录每个节点/叶子的祖先和后代关系的实际闭包表)上的第二个 JOIN 时遇到了最大的麻烦。这如何创建面包屑结果?
mysql - MySQL 传递闭包距离比
有一张表格distances(city1, city2, dist)
列出了几个城市和它们之间的距离。交易是,从这些信息中我们可以得到更多的距离,比如在表distances
dist A -> B 和 dist B -> C 中,所以我们可以得到不在distances
.
任务是生成distances_tr(city1, city2, dist)
具有第一个表的传递闭包的表,其中包括(A, C, dist(A,C))
.
如何使用PROCEDURE
简单的 SQLSELECT, INSERT, UPDATE
命令来实现这一点?我知道它可以递归完成,但教授告诉我们要双向进行。
mysql - 如果我在层次结构中有名称列表,如何从 MYSQL 的闭包表中找到层次结构?
小提琴:http ://sqlfiddle.com/#!9/c1495/1
我有一个名为“位置”的表:
和名为“闭包”的表:
现在,我想将手头上的名称层次结构转换为位置 ID。
示例:瑞典 => 斯德哥尔摩 => 城镇将产生:
如果不返回任何名为“城镇”但父母不完全相同的地方,我怎么能做到这一点?
mysql - 在 MySQL 中使用深度字段的 Closure 表上限制排序结果的查询的最佳方法是什么?
研究分层数据持久性并引导我关闭表格并根据上述研究的高潮拼凑出这个评论结构。
在闭包表中创建新节点的查询很容易让我掌握并通过JOIN
闭包表上的 a 为后代获取数据也很简单。
但是,我想对此进行扩展,并通过 x 的深度对父母/孩子的数量进行排序和限制。
我试图通过使用外键和索引来保持事情的及时/高效(我希望评论表变得非常大)。我正在寻找一个可以做我在标题中要求的多合一查询,但不反对将其分解以提高速度/效率。
当前表结构:
我想要做的更清晰的总结是获取 20 条共享 的评论ancestor_id
,按时间排序。同时还更深入地获取每个人的评论 2 length
(将这些评论限制在更小的数量 2)也按时间排序。
但是,我不希望总是按时间排序,并且还想获取按其排序的结果comment_id
是否可以在单个查询中完成所有这些操作?我不太确定从哪里开始。
pentaho - Mondrian/Saiku - 闭包表 - 空指针异常
我目前正在做一个 PoC 并面临关闭表的问题。我正在使用 Saiku CE,数据库是 postgres。一切正常,直到我添加一个闭包表。如果我删除闭包表层次结构,我不会收到任何错误。如果保留它,我会收到错误消息。我使用从 Saiku 本身下载的 Foodmart.xml 创建了演示模式。
一些论坛建议这是 Mondrian 的一个开放错误,但如果是这样,为什么相同的语法适用于 foodmart?Saiku CE有问题吗?如果我将 Saiku EE(试用版)用于我的 PoC,它会起作用吗?
11:54:17,900 WARN [RolapUtil] Mondrian:警告:找不到 JDBC 驱动程序 sun.jdbc.odbc.JdbcOdbcDriver 11:54:17,902 WARN [RolapUtil] Mondrian:警告:找不到 JDBC 驱动程序 oracle.jdbc.OracleDriver 11:54: 18,728 错误 [SecurityAwareConnectionManager] 连接错误:ersdemods java.lang.NullPointerException
问候, Puneet Tayal
java - 如何使用 Java 将数组复制到 MongoDB 中的另一个文档?
在 MongoDB 和 Java 中,我正在使用闭包表概念构建二叉树。假设我的初始数据如下:
插入新用户时,我想通过以下方式设置其祖先: - 获取父祖先 - 插入子祖先 - 然后添加子用户 ID(之后使用 addToSet 没有问题)
对于用户 3,结果将是:
如何优雅地从父级获取数组,将其复制给子级?我正在使用 MongoDB Java Driver 3.x,请帮忙。
之前谢谢你。
php - PHP中的Mysql关闭表地址后代
我有张贴表
+----+-------+--------------+
| Id | Name | Message |
+====+=======+==============+
| 1 | John | John's msg |
| 2 | Marco | Marco's msg |
| 3 | Ivan | Ivan's msg |
+----+-------+--------------+
评论表,PostId 为外键
创建闭包表以保持评论层次结构,如下所述:http: //karwin.blogspot.ba/2010/03/rendering-trees-with-closure-tables.html
封闭表
+----------+-------------+
| ancestor | descendant |
+==========+=============+
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 4 | 4 |
+----------+-------------+
为了在 PHP 中创建祖先>后代关系,我使用了这个查询
我从评论表中获得了第 3 条评论的结果。但我想在这样的网页上显示这个:
我不知道如何告诉 PHP 谁是祖先,谁是后代。这是我最好的尝试:
但它只显示所有评论。需要一种方法来识别评论何时是后代。
mysql - 使用闭包表的 SQL 家谱系谱,支持配偶、兄弟姐妹、姻亲、兄弟姐妹等
我已经阅读了 Bill Karwin 在这篇文章中的回答,我很惊讶它如何解决了我一直在使用 MySQL 数据库(至少在父子关系或祖先-后代级别)研究的家谱谱系的基本问题。与邻接列表和其他模型相比,它的优势使其成为我的项目的绝佳选择。但是,正如所讨论的,不支持为兄弟或侄子连接节点。此外,我想将这样的原则应用到我的数据库项目中,以支持姻亲、侄子、孙侄女、配偶等的连接。如果可能,我想扩展 Closure Table 原则及其查询以支持这种关系。
参考图片(黄色节点为配偶): 样本家庭树结构
具有正确节点连接的查询可以给出答案,例如在引用时:
(4) 至 (5):兄弟姐妹
(9) 至 (2):配偶
(3) 至 (5):侄子/侄女
(4) 至 (3) 或 (6) 至 (2):叔叔/阿姨
(1) 至 (9):儿媳
(10) 至 (4):侄子
在这种情况下,当我提到单个节点时,比如说(2),它可以给我相关节点的列表以及它们如何相互关联:
(1) 是父母
(5) 和 (4) 是儿童
(3) 是兄弟姐妹
(9) 是配偶
(10) 是姐夫
(6) 是侄子/侄女
(8) 和 (7) 是孙子
在构建家谱系谱时还有其他场景,例如半兄弟姐妹(父节点不同,因此您不能假设这两个节点是否具有相同的父节点);和其他关系,例如“我的配偶和我兄弟姐妹的配偶也是兄弟姐妹”。这也表明我的孩子是我兄弟姐妹的配偶的侄子)。
我确信这可以通过 Closure Table 完成,但可能不是那么简单。任何文章或建议或查询都会有很大帮助。谢谢!(也许很久以前有人已经解决了这个问题,我只是找不到合适的资源)。:)
mysql - 使用闭包表在连接选择中获取最低层次的孩子
我有一个封闭表 HIERARCHY
和一个连接表 PROPERTIES
我可以使用查询获取整个子树
获得最低层次结构成员的最简单/最快的方法是什么?,即。有min(depth)
我仍然需要保持层次结构,这意味着如果100
在查询中找不到,4
就会显示出来。
换句话说,我试图找到具有最低深度的树成员的所有行,可能不会在WHERE
子句中重复查询
数据库是目前完全发布的mysql,即。5.7
php - 如何使用闭包表 MySQL 创建树
我想通过使用闭包表来创建一个用户层次树。
用户表:
用户树:
然后我正在尝试创建一棵树:
但是这种方法只user_tree
为每个用户创建一个记录。有没有办法为现有用户创建树?