问题标签 [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 回答
673 浏览

sql - 作为自上而下 JSON 的 SQL 自引用表查询

我有一个名为 scope 的自引用表(在我的 user_account 架构中),它是分层数据 - 一些示例数据(Postgres 9.4):

*****编辑:******

制作了一个 SQL 小提琴:http ://sqlfiddle.com/#!15/43ff9/2/0有一个更详细的例子。请注意 JSON 输出底层的重复性质。我将把这些信息留在这里以供参考。

*****结束编辑******

user_account.scope

显然,顶级作用域没有 parent_id,它可以(任意)深入多个级别。

我正在尝试编写一个 SQL 查询,它将整个表作为嵌套的 JSON 对象递归返回。我在这方面取得了很大的成功:

但问题是,子范围被列为顶级项目的数组(因为 json_agg(sub_scopes) 部分),但仅列为简单的 NULL 或任何嵌套的单个对象(因为 row_to_json( ssc)​​部分)。它还在 JSON 中重复父级,为其每个 sub_scopes 重复一次。

我得到了什么:

我想要的是:

我尝试将 row_to_json 更改为 json_agg,但您不能在递归调用中使用聚合函数。关于如何 A)修复此查询或 B)postgres 方法来“修复”json 以按照我的意愿合并值的任何建议?一直在玩这个,但没有任何运气。

谢谢!

0 投票
1 回答
816 浏览

entity-framework-6 - EF6 中的自引用表

我认为这会很容易......我有一个 table Module,它可以包含“基本”模块和“复合”模块(由 1-n 个基本模块组成)。

所以我在 SQL Server 2014 中有这两个表:

我填写了一些基本模块:

现在我创建了一个 EF 6“代码优先,数据库逆向工程”模型并获得了这个Module类:

和这个上下文类:

当我现在尝试用这段代码创建一个新的复合模块时,结果发现事情并不像我想象的那么容易......

此代码导致错误(在尝试获取基本模块 #1 的行上):

System.Data.Entity.Core.EntityCommandExecutionException 未处理
HResult=-2146232004
消息=执行命令定义时发生错误。有关详细信息,请参阅内部异常。
来源=实体框架

InnerException:System.Data.SqlClient.SqlException
HResult=-2146232060
消息=无效的列名“Module_ModuleId”。

我在这里想念什么?为什么 EF6 逆向工程代码不够聪明,无法创建适用于这种情况的模型?

到目前为止,我一直在使用 EF4 和数据库优先的方法,所以所有这些流畅的代码优先配置对我来说仍然有点神秘(和问题)......有人看到我的(很可能非常)明显的菜鸟错误??

PS:这是“现有数据库中的代码优先”逆向工程产生的代码 - 不是我自己的。那么为什么逆向工程输出的代码最终还是不行呢??

0 投票
2 回答
755 浏览

mysql - 使用自引用列更新 MySQL 表

我有一个看起来像这样的表(简化):

自引用列指的是同一张表的 id 号。在上面的例子中,Wien 和 Виена 都指向同一个城市,所以它们的 selfreference 列的值应该等于 1。

换句话说,我需要做类似的事情

但是上面的 SELECT 语句显然是错误的。我不知道如何进行。

任何提示将非常感谢。

万事如意,腾

编辑:所需的输出如下所示:

0 投票
1 回答
89 浏览

ruby-on-rails - 模型回调不适用于自引用关联

我有一个Evaluation有很多子评估的模型(自我参照)

我正在使用子评估作为嵌套属性创建和更新评估。

calculate_score方法在子评估创建时触发,但在更新时不会触发。我试过before_updateafter_validation. 但似乎没有任何效果。

评估表

似乎是什么问题?

0 投票
1 回答
133 浏览

c# - RejectChanges 数据集中的自关系

我在拒绝带有自相关表的 DataSet 时遇到问题。

首先,我在表中插入父行和子行。然后我从表对象中调用 RejectChanges 方法或从 DataSet 中调用相同的方法。RejectChagnes 方法抛出 RowNotInTableException。

这是演示这一点的代码(TestRejectChanges.zip):

我试图覆盖 DataTable 的 RejectChanges 但这个方法不是虚拟的。有没有办法使用 DataSet 的 RejectChanges 来做到这一点?

0 投票
2 回答
1279 浏览

c# - 使用 EF Code First 对员工-助理关系建模

简而言之,以下是业务需求:

  • 所有员工都需要存储在数据库中
  • 有些员工有助理,有些没有
  • 一些员工有不止一名助理
  • 助理也是雇员

显然有一点自我参照的情况。但与典型的“员工-经理”情况不同的是,一个员工可以有 0 个或多个助手。因此,Employee和员工助手的组合需要以EmployeeEmployeeAssistant之间的一对多关系存储在单独的表中。但是我很困惑如何在 Entity Framework 6 Code First 中对此进行建模。

我从这个开始:

Update-Database但我在命令期间收到错误:

在表“EmployeeAssistant”上引入 FOREIGN KEY 约束“FK_dbo.EmployeeAssistant_dbo.Employee_EmployeeId”可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。

我错过了什么?我应该以不同的方式处理这个问题吗?

0 投票
1 回答
1104 浏览

sql-server - 分层表中的汇总计数(自引用表)

我有一个以下格式的表。这是一个自引用表,其中每条记录都指向其父记录。

我希望输出采用以下格式。父母的数量应该是叶子孩子的数量之和。 注意:只有叶子孩子会包含计数。我想把它卷起来直到父母。

请帮忙。

0 投票
2 回答
3240 浏览

database - 如何在 Flask-SQLAlchemy 中创建自引用的一对多关系?

我有一个名为 的模型Post,它有一个名为 的布尔字段is_answer。如果 a 的is_answer字段Post为 True,则为“问题”;否则,这是一个“答案”。我想创建以下问答关系:

一个“问题”可能有多个“答案”,但一个“答案”只有一个“问题”。由于“问题”和“答案”本质上都是Posts,所以我认为这种关系必须是自我参照的。

这是我尝试过的:

错误是:

ArgumentError:Post.question 和反向引用 Post.answer 都是相同的方向符号('ONETOMANY')。您的意思是在多对一上设置 remote_side 吗?

0 投票
2 回答
110 浏览

database-normalization - 自我参考

对于我正在执行的评估任务,实体相册具有属性also_bought,这是一个自引用属性。然而,这个属性对于任何一张专辑都有多个条目——因为also_bought 推荐很少只有一个推荐——因此,在标准化方面有点问号。我不确定它是否通过了 1NF。

需要明确的是,整个实体的集合是

专辑(album_id、标题、播放时间、流派、release_date、price、also_bought)

0 投票
1 回答
867 浏览

sqlalchemy - SQLAlchemy:如何查询自引用邻接列表表上的可选列?

我有以下Table代表时间线的模型。

language_markerColumn 是需要以递归方式查询的列。并不是所有的记录都有这样的属性,业务逻辑是:沿着从根到子时间线的层次谱系,至少有一级的TimeRange实例带有这样的属性,最底层的应该返回。这有点像级联样式表,如果TimeRange对象本身没有这样的属性,只需往上一层看,util 找到了一层,最后定义的样式获胜。

我应该研究什么技术方向来实现这样的查询?我正在使用 SQLAlchemy,后端是 SQLite。谢谢。