问题标签 [recursive-query]

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 投票
2 回答
3210 浏览

mysql - mySQL 传递闭包表

我有一些我一直在 SQL Server 中使用的代码来从另一个只有直接父/子关系的表生成一个闭包表,我可以对此运行非常简单的查询来确定沿袭。现在我需要在 mySQL 中完成所有这些工作,但是我在使用递归查询来生成闭包表时遇到了麻烦......

我原来的 SQL 服务器查询是

我的第一个问题是找到@@ROWCOUNT 的替代品...但也许递归查询在 mySQL 中完全不同?我还查看了Bill Karwin 的演示文稿

PS。由于性能问题,我需要“COLLATE DATABASE_DEFAULT”。

谢谢。

0 投票
1 回答
882 浏览

sql - 混合递归查询和游标表达式

我有一个表,其中包含表示层次结构的数据。从该表中获取单个“对象”的数据的最简单方法是递归查询。同一个表还存储与“对象”关联的“成员变量”。我认为在单个查询中查看对象结构以及关联的成员变量会很好,所以我尝试了类似的方法:

...并且 Oracle 告诉我“不允许使用光标表达式”。

如果我将其作为两个单独的游标(循环遍历一个游标的结果,然后根据这些结果使用另一个游标),则一切正常,因此我不需要单游标解决方案。

我只是想知道为什么我不能使用游标表达式组合这两个查询 - 或者我可以组合它们而我只是以某种方式错过了它?

(Oracle版本为10g)

0 投票
1 回答
2070 浏览

python - 如何动态调整 SQLAlchemy ORM 中预加载的递归深度?

我有一个两表分层设置,其中表 A 引用表 B,然后引用回表 A 中的不同记录,依此类推......但仅限于给定的递归深度。

我使用 SQLAlchemy 和声明性的方法很好地工作。我还成功地使用了表关系上的lazyjoin_depth属性的预加载。这是根据SQLAlchemy 文档

但是,这种安排在程序加载时将递归深度固定在 ' join_depth' 一次......但是根据我正在使用的数据,我知道我每次应该使用的递归深度。 如何更改每个查询使用的递归深度?

我考虑过摆弄join_depth基础 ORM 对象上的 master 属性,但这不起作用,因为我有一个多线程 scoped_session 应用程序,这会很危险(更不用说参数很难在运行时在 SQLAlchemy 中定位!)。

我也看过使用joinedload查询,但不知道如何改变深度。

我也知道通过CTEsWITH RECURSIVE在某些数据库中可用的 ' ' SQL 语法,但尽管如此,我想暂时避免这种情况,因为一些数据库仍然不支持它(SQLAlchemy 也不支持 - 至少目前没有,也没有很多方言定制)。

0 投票
2 回答
3474 浏览

mysql - 如何在 MySQL 中递归删除行(即也删除外键链接的行)?

我在我的 MySQL 数据库中使用约束。但是现在,当我尝试删除其他条目具有外键关系的条目时,这让我很头疼。我总是收到这个错误:

我可以向删除语句传递任何参数或任何东西,以便它递归地删除与我要删除的行具有外键关系的所有行吗?

0 投票
1 回答
262 浏览

sql - 给定一个消息的入口点的消息线程的 SQL 2008 递归查询

也许是一个过于复杂的标题。基本上想到一个电子邮件收件箱。我有一张这样的桌子:

替代文字

如您所见,它是一个递归表,非常简单,只有一条消息的 parentID,正如您在绿色高亮环中看到的那样,“链”的末端是 parentID 为 NULL 时。

我需要提供(例如)12 的 INBOXID,并返回所有父母。在这个例子中,我应该得到 1 条记录,即 INBOXID 为 11。
在第二个例子中,我应该能够传入 INBOXID 9,但这次我应该取回 INBOXID 8,7 和 1 行

我确实通过以下查询取得了一些成功:

..但当然它会返回任何行的所有父母。起点收件箱),我不太清楚我需要做什么???

非常感谢任何帮助!!!!大卫。

0 投票
1 回答
481 浏览

tsql - 创建唯一的 URI Slugs - 这是一个递归触发器吗?(SQL 服务器)

这是我的桌子:

dbo.帖子

  • PostId(身份,PK)
  • 主题
  • UniqueUri (NVARCHAR(350), NOT NULL)

当我创建“帖子”时,我插入了一个空白的UniqueUri(使用NEWID()内置函数)。

然后我在“发布”表上有一个触发器:

它调用一个 SPROC 来创建唯一的 Uri。

SPROC 有一些这样的代码:

我注意到当我尝试只插入一个帖子时,它需要一分钟多的时间。

我只能推断这是一个递归触发调用?

基本上,当创建/更新帖子时,我需要创建唯一的 uri(很像堆栈,用于问题)。

我能想到的唯一解决方案是创建另一个名为 UniqueUri's 的表,它除了 PostId FK 和 Uri 之外什么都没有,例如 1-1,我总是尽量避免。

然后 SPROC 将更新该表。

还有其他建议/想法吗?

0 投票
1 回答
1735 浏览

sql - SQL递归查询

我有一个表格类别,

1) ID
2) CategoryName
3) CategoryMaster

数据为:

1 计算机 0
2 软件 1
3 多媒体 1
4 动画 3
5 健康 0
6 Healthsub 5

我创建了递归查询:

我将父类别的结果放在底部,就像我得到计算机的所有子类别一样

但我想要自下而上的结果,比如从动画到计算机,请有人建议我正确的方向。

先感谢您 :)

0 投票
4 回答
5637 浏览

sql - 从表示树结构的 Oracle 表中选择所有后代行

我在 Oracle 10g 中有一个代表树结构的表 MYTYPE,它是这样的:

我想选择 MYTYPE 中作为特定 ID 后代的所有行,以便我可以在其他地方创建查询,例如:

什么是构建后代集的经济高效的方法,最好不使用 PL/SQL?

0 投票
1 回答
5807 浏览

sql - 帮助递归 CTE 查询加入第二个表

我的目标是通过表 tbl 进行递归,并在通过该表进行递归时从另一个表 tbl2 中选择一个国家缩写(如果存在)并将这些结果附加在一起,这些结果将包含在最终输出中。

我将使用的示例来自这篇文章

tbl2 有一个外键“tbl_id”到 tbl,看起来像这样

*注意:并非所有国家都有缩写。

诀窍是,即使一个国家没有缩写(例如印度),我也希望亚洲的所有国家至少显示“AS”的亚洲缩写。如果国家/地区确实有缩写,则结果需要如下所示:China:CN,AS

我已经使用子查询部分地工作了,但是 India 总是返回 NULL 作为缩写。这就像如果没有返回缩写的完整递归路径,那么它返回 null。也许解决方案是在缩写表上使用左外连接?我已经尝试了几个小时许多不同的变体,并且子查询尽可能接近。

顺便说一句,如果这很重要,我正在使用 sql server 2005

0 投票
9 回答
21140 浏览

django - 所有孩子的Django自递归外键过滤器查询

我有一个具有自引用外键关系的模型:

现在我想为一个人获取所有多层次的孩子。如何为它编写 Django 查询?它需要表现得像递归函数。