问题标签 [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.
laravel - 在单独的表上进行自引用 - Laravel 中的 BoM
我很好奇是否有一种简单的方法可以使用 eloquent 实现材料清单(组件)类型的递归系统?这是我正在使用的两个表结构:
inventory
桌子:
+----+------------+-------------+
| id | name | is_assembly |
+----+------------+-------------+
| 1 | Table | 1 |
+----+------------+-------------+
| 2 | Table Top | 0 |
+----+------------+-------------+
| 3 | Table Legs | 0 |
+----+------------+-------------+
inventory_assemblies
桌子:
+----+--------------+---------+----------+
| id | inventory_id | part_id | quantity |
+----+--------------+---------+----------+
| 1 | 1 | 1 | 1 |
+----+--------------+---------+----------+
| 2 | 1 | 2 | 1 |
+----+--------------+---------+----------+
| 3 | 1 | 3 | 4 |
+----+--------------+---------+----------+
此组装表应表示“1 个桌子包含 1 个桌面和 4 个桌腿”。
库存模型:
InventoryAssembly 模型:
现在这可行,但是如果我将一个项目添加到自身的程序集中,它会得到一个无限循环。所以这是我的问题:
- 如何防止无限递归查询?
- 我这样做对吗?
- 有没有更简单的方法?
- BoM 模型是否更适合嵌套集设计?
我真的很难理解自引用重复查询。我真的很感谢任何帮助,在此先感谢!
编辑:使用 user3158900 建议的库存模型本身的属于多个关系,我能够执行递归汇编查询,如下所示:
库存模型(从下面的答案修改):
检索单个级别的程序集:
检索完整的递归程序集结果:
entity-framework - 具有多个父属性、单个子集合的 EF6 自引用表
我有一个引用自身的表,但我正在努力获得我想要的映射。我希望能够将孩子定义为具有特定人作为母亲、父亲和/或监护人的人的集合。监护人可以是父亲或母亲。
我想要一个可以在列出人员的地方浏览的人员树形视图;用户可以展开一个人的节点以显示该人的所有孩子,而不考虑孩子定义的关系(母亲、父亲或监护人)。
现在,任何帮助将不胜感激,我的观点必须如下所示:
sql - Oracle:递归自引用连接与第 n 级记录
我有这样的自引用表:
结果我需要第 n 级父级。例如二级家长
mysql - MySQL 创建一个可以为空的外键,它引用同一张表上的 id 字段
我试图使 Post 表中的“in_reply_to”字段成为可空外键,该外键引用同一表上的 id 字段。基本上,如果此字段为空,则该帖子不是对另一个帖子的回复——如果它不为空,那么该帖子是对具有匹配 id 的帖子的回复,如果这有意义的话。但是当我通过 mysql 运行我的文件时,我收到以下错误。
ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 '(160) 、 FOREIGN KEY (userID) REFERENCES users(userID)、 FOREIGN KEY (in_reply_' 在第 6 行查询 OK,0 行受影响 (0.36 秒) 附近使用正确的语法)
所以它说我写的命令有问题,但我无法确定我做错了什么。
这是sql文件的内容
因此,如果您对如何使其引用帖子的 id 有任何指示,我将不胜感激。
postgresql - 选择 [COLUMN_NAME] AS,自引用表
以下是我对自引用表 emp_tabref1 执行的函数get_reportees
emp_tabref1的表结构:
我想要返回的是我们传递的 id 的层次结构(上下),它将具有 emp_name、emp_id、mgr_id 和mgr_name。
但是我的函数是这样返回的:
我的预期输出在哪里
该函数应返回经理姓名而不是员工姓名。请帮忙!
c# - EF 转换以查看模型树结构
我在实体框架中有一个模型,在同一张表中有父子关系。它是一个 0,1 到多映射。现在它有许多属性,在一种情况下,我不想要所有这些属性,只需要 Id、Name 和 Children。
我希望将这些列表转换为
我正在做如下。
并得到错误
无法将“System.Data.Entity.DynamicProxies.Foo_ALongNoInHexadecimal”类型的对象转换为“Namespace.ViewModel.FooModel”类型。
有没有办法将树结构投射到树的视图模型?
mysql - 从mysql自引用表和另一个表创建视图
我有一个带有字段 id 和父级的表“组织”。parent 引用同一个表(自引用键)。
我有另一个名为“user_organization”的表,其中有 user_id 和 org_id。org_id 链接到“组织”表中的 id。
现在我想创建一个视图,使用这两个包含 user_id 和 organization_id 的表。由于一个组织的成员将是所有子组织的成员,因此该视图将包含来自实际 user_organization 表的额外值。
如何创建此视图?
oracle - 从 Oracle 迁移到 MariaDB - 触发器、自引用表
我正在将我的 Oracle 数据库迁移到 MariaDB,但我不确定如何在我的一张表上创建自引用 ID。
本质上,如果 abelongs_to_id
没有指定,它将假定它属于自己(并且与生成的 ID 相同ON INSERT
);但是,如果belongs_to_id
已指定 a,那么它将使用它来代替。
我这样做的原因是因为我将帖子和回复存储在同一个表中。如果id
= belongs_to_id
,那么它是一个发起帖子,而如果它不同,它是对另一个帖子的回复。
我曾考虑让我的应用程序(Node JS)快速UPDATE
使用 last_insert_id - 但它看起来相当混乱,如果可能的话我想避免这种情况。
这是我在 Oracle 中使用的 - 有人知道我如何在 MariaDB 中复制它吗?
sql-server - 如何在级联上删除自引用关系?
我有一个具有自动引用关系的表,如下所示:
表A(IDTableA,IDTableARoot,...)
我有这个而不是删除触发器来删除:
我想我有这两行:
第 1 行:IDTableA:1 IDTableARoot:1
第 2 行:IDTableA:2 IDTableARoot:1
当我尝试删除第 1 行时:
只有它被删除了 ID = 1 的行,而不是 ID = 2 的行,但它应该被删除,因为在触发器的第一条语句中我说我必须删除 IDTableARoot = IDTableA 其中 IDTableA 的行是我要删除的行的 ID。
那么,如何删除属于自我关系的级联行?
非常感谢。
django - 如何在 Django 中使用带有自引用表的 dumpdata/loaddata?
我有一个 Django 1.7 应用程序,针对 sqlite3 开发,并迁移到 Postgresql。一个名为 Place 的模型表与其自身具有父关系。我使用 dumpdata 创建一个 .json 提取。
当我尝试使用 loaddata 将提取数据读入 Postgres 数据库时,Django(不是 postgres)给了我:
django.core.serializers.base.DeserializationError: Problem installing fixture '/home/ugliest/project/thub/dbdump25jan_nat.json': Place matching query does not exist;
这告诉我 django 在将数据加载到数据库之前正在验证数据。有没有办法在验证之前允许这些数据?我知道 Postgres 具有延迟约束检查的能力,但即使我可以从 django 触发它,它也不会阻止 django 验证。怎么把数据弄进去?
我觉得我错过了一些明显的东西。这似乎经常发生,并且有一个已知的简单修复。我真的必须编写一些自定义的混乱来重新排序提取文件吗?
编辑:FWIW,从未找到答案,并写了一个自定义的混乱来重新排序。