问题标签 [self-referencing-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.

0 投票
0 回答
55 浏览

ruby-on-rails - 如何使用多嵌套的自引用子关联来做 strong_params?

所以,我有一个具有子条件的 Group 对象。Condition 对象还具有条件的自引用子关联:

组 has_many :conditions

条件belongs_to :group has_many :conditions

有没有一种很好的方法可以在不需要为每个级别明确列出它们的强参数中指定多个级别(可以有多个级别等)?

0 投票
1 回答
381 浏览

sqlite - sqlalchemy 自引用多对多与“选择”作为关联表

问题描述

我正在使用 sqlalchemy (v1.2) 声明式,并且我有一个Node带有 id 和标签的简单类。我想建立一个自引用的多对多关系,其中关联表不是数据库表,而是动态select语句。此语句从 的两个连接别名中选择Node并返回表单的行(left_id, right_id),定义关系。如果我通过实例对象访问关系,则到目前为止的代码可以工作,但是当我尝试按关系过滤时,连接会变得混乱。

“经典”自指多对多关系

作为参考,让我们从Self-Referential Many-to-Many Relationship文档中的示例开始,该示例使用关联表:

通过这种关系加入Node自身:

一切看起来都很好。

通过关联选择语句的多对多关系

作为一个例子,我们实现了一个用and (如果存在的话)next_two_nodes将一个节点连接到两个节点的关系。完整的测试代码。id+1id+2

这是一个为“动态”关联表生成选择语句的函数:

请注意,该函数将结果缓存在全局变量中,因此连续调用总是返回相同的对象,而不是使用新的别名。这是我select在关系中使用它的尝试:

一些测试数据:

通过实例访问关系按预期工作:

但是,过滤关系不会给出预期的结果:

我只期望Node1并被Node2退回。事实上,连接的 SQL 语句是错误的:

与上面的工作示例相比,ON anon_1.left_node_id = anon_1.left_node_id应该清楚地阅读ON node.id = anon_1.left_node_id. 我primaryjoin似乎错了,但我不知道如何连接最后一个点。

0 投票
1 回答
1190 浏览

c# - EF Core one-way self referencing entity binding

I have set up a self referential entity using EF Core which looks like this:

Entity

Binding

I am retrieving these entities via an API and the current result looks something like this:

The problem I have with this is that the third item in the array is just the reverse of the second. Is there a way to avoid this so that I only have the parent -> child relationship rather than both parent -> child as well as child -> parent. The example above is a heavily cut-down version of what my API is actually returning so I want to reduce the unnecessary bloat as much as possible because there'll be a lot of relationships going on.

Ideally what I want is to just get rid of the ParentType property but still have the ChildTypes collection but I'm not sure how to define that in the model builder.

EDIT:

I have removed the fluent relationship as it's not needed. I've also tried the following:

(this.Items is the DbSet by the way)

However this requires changing ChildTypes to an IQueryable and when I do that I get the following exception:

The type of navigation property 'ChildTypes' on the entity type 'DetailType' is 'EntityQueryable' which does not implement ICollection. Collection navigation properties must implement ICollection<> of the target type.

0 投票
1 回答
19 浏览

jpa - 如何绑定非空自引用实体?

我正在尝试绑定一个看起来像这样的表

如你看到的,

  • 它看起来像一个自引用实体
  • 没有 FKparent_id
  • parent_id不可为空,默认为0

我该如何绑定?

跟随映射就好了吗?

换句话说,我如何映射0null

0 投票
1 回答
323 浏览

google-sheets - 在 Google Sheets 中的脚本中使 B1 返回 A1,B2 返回 A2,依此类推。此函数的正确单元格范围参考是什么?

这是一个非常基本的问题,我几乎觉得问它很愚蠢。

我正在编写一个函数,该函数应该将来自一个单元格的数据写入谷歌表格中另一个单元格的注释中。

如果我从一个单元格测试到另一个单元格,一切正常,但由于我明显不希望它只用于一个单元格,我想为两列的所有其他单元格自动化它:

我希望 B1 返回 A1,B2 返回 A2,B3 返回 A3,等等。但是我尝试的公式只为所有 A 单元格创建带有 B2 值的注释。我知道这是引用的错误,我可能应该在某处使用美元符号,但由于我对此非常陌生,我仍然无法自己解决这个问题。

这是功能:

就像我说的,当我在第一个括号中只留下“A1”而在第二个括号中留下“B1”时,它就可以了。或者即使我只是复制相同的代码并手动将每个 ney 副本更改为我想要的单个单元格。

0 投票
2 回答
87 浏览

ruby - Activerecord has_and_belongs_to_many 与嵌套组

我需要将用户组存储在其他组中,有点像 Windows Active Directory。

我有以下工作

但我也想做以下事情

最简单的方法是什么?

0 投票
0 回答
74 浏览

python - 如何使用自引用表在 SQLAlchemy 中编写查询?

我有一个自引用表,如下所示:

数据示例:

domain_id,parent_id,domain_name

我需要编写一个查询,其中所有域都将放在它的父域之后。

我最好的尝试是:

但结果并不完全是我正在寻找的结果。

domain_id 和 parent_id 是相反的。

0 投票
2 回答
1059 浏览

python - SQLAlchemy FK ondelete 不限制

我建立了自我参照关系。一个人可以有一个单亲(或无),一个人可以有多个孩子(或无)。

因此允许NULL作为 FK:

但是,如果 Person 是父母,我想禁止删除他们。所以我包含了该ondelete='RESTRICT'子句,但它没有效果。parent_id 列在删除父级时仍设置为 NULL。

(注意我的 SQLite 连接已将 pragma 外键约束设置为 ON)

为什么删除父级时数据库不会抛出错误,因此以它作为外键的子列会限制这一点?

0 投票
1 回答
96 浏览

python - 从同一个表中获取具有级别的父子关系

嗨,我是 django 和 python 的新手。

我想添加级别,如何进一步分解它。

请帮助我,投入大量时间和精力。谢谢大家 :)

0 投票
3 回答
642 浏览

c# - LINQ 自引用表 SELECT 查询

我有一个自引用员工表,这意味着有一个员工的主键“EmployeeID”和一个外键“SupervisorID”作为父级(主管)。经理位于层级之上,因此他们的 SupervisorID 为空。还有一个日期列 (CreatedOn),用于过滤特定日期,但只有经理有日期,而不是他们的员工。我试图从特定日期、经理和他们的员工中获取所有结果,但我无法让它运行。我需要使用 LINQ 来实现这一点,但我认为我可以先进行 SQL 查询,看看我是否能够以某种方式将其迁移到 LINQ 查询(无论哪种语法)。但这是非常妄想的,一旦我意识到它和 LINQ 一样难......我认为这可以通过 CTE 来实现,但我可以' 根本无法运行自引用。要么我只找经理,要么什么都没有……这是一个示例表:

可以看到,Sanders (2019-01-01 16:20:33) 有 2 名员工 (Flanders, Andrews), Ranger 2019-03-20 18:04:56 有 2 名员工 (Hammer, Enderson) 和 Larsson (2019 -10-03 04:55:16) 有 1 名员工 (Simpson)

我对LINQ一无所获。如果我过滤日期,我就没有办法过滤员工的初始数据集了。

我尝试了加入,但这也不是很好:

适当过滤器的预期结果集将是 Sanders 和他的员工,因为 Sanders 的条目是在 1 月 1 日创建的,并且他的员工在他手下工作:

有谁知道,我怎么能做到这一点?我将无法调整数据库设计,因为我只能读取并且另一个应用程序推送数据,而我无法更改。