问题标签 [one-to-many]

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 投票
8 回答
8985 浏览

mysql - One-to-many relationship in the same table

Im trying to use to define a one-to-many relationship in a single table. For example lets say I have a Groups table with these entries:

The group Coldplay could be a child of the group Capital Records and a child of the group Management Company and Gnarls Barkley could only be a child of Atlantic Records.

What is the best way to represent this relationship. I am using PHP and mySQL. Also I am using PHP-Doctrine as my ORM if that helps.

I was thinking that I would need to create a linking table called group_groups that would have 2 columns. owner_id and group_id. However i'm not sure if that is best way to do this.

Any insight would be appreciated. Let me know if I explained my problem good enough.

0 投票
2 回答
8525 浏览

php - PHP/mySQL - 如何将嵌套行提取到多维数组中

来自我的另一个问题,我学会了不要在循环中使用数据库查询,因此我必须学习如何在循环之前以方便的方式获取所有数据。

假设我有两个表“秤”和“项目”。items 中的每一项都属于一个 scale in scales,并与一个外键(scaleID)链接。我想在一个查询中将所有数据提取到一个数组结构中,这样第一个维度是所有列的所有比例并嵌套在其中,一个项目的所有项目都缩放所有列。

结果将是这样的:

到目前为止,我主要完成了一对一关系的左连接。这是一个一对多的,我无法完全理解它。

它是一个正确的连接吗,它也可以用一个子查询来完成,如何将完整的外部行也放入其中......

稍后我想用嵌套的 foreach 循环遍历它。

也许只是我头疼...

0 投票
2 回答
1281 浏览

linq-to-sql - 在 Linq2Sql 中保存一对多关系的最佳方法是什么?

我试图找出在 Linq2Sql 中保存简单的一对多关系的最佳方法。

假设我们有以下 POCO 模型(顺便说一句伪代码):

人有零到多个车辆。

现在,当我保存一个人时,我将该 poco 对象传递给存储库代码(恰好是 L2S)。我可以很好地保存 person 对象。我通常这样做。

我不确定我应该在哪里以及如何处理该人可能拥有的车辆清单?有什么建议么?

0 投票
2 回答
5287 浏览

sql - 通过要求所有多个满足条件来过滤一对多查询

想象以下表格:

创建表格框(id int,名称文本,...);

创建表 thingsinboxes(id int, box_id int, thing enum('apple,'banana','orange');

表格看起来像:

如何选择至少包含一个橙色且没有不是橙色的框?

假设我有几十万个盒子,而且盒子里可能有一百万个东西,这个规模如何?

如果可能的话,我想把这一切都保存在 SQL 中,而不是用脚本对结果集进行后处理。

我同时使用 postgres 和 mysql,所以子查询可能很糟糕,因为 mysql 不优化子查询(无论如何都是 6 之前的版本)。

0 投票
2 回答
7728 浏览

java - 如何在 Ibatis 中实现一对多关系?

假设我有这个类:

A 类与 B 类具有一对多的关系。我已经有一个服务可以缓存 B 对象并在 id 上返回它们。

表架构看起来像这样

现在,我如何在 iBatis 中映射它?

由于 B 对象已经被缓存,我想将 id 列表获取到 A 对象中,然后使用该服务来丰富 As。

有人可以建议如何去做吗?

我能想到的两种可能的选择是:

  1. 在 A(AtoB 映射)中创建一个内部类,并在 iBatis 配置中使用选择查询来填充它
  2. 在 iBatis resultMap/select 中使用另一个选择来获取 B id 列表(不太清楚如何在配置中执行此操作)
0 投票
4 回答
2228 浏览

nhibernate - NHibernate 单向、一对多、映射问题

我在 NHibernate 中有一个场景,其中实体 Employee 和 EmployeeStatus 之间存在一对多的关系。

Employee 具有属性,例如:ID、Name 和 EmployeeStatus 的 IList,而 EmployeeStatus 就这个问题而言,只有它自己的 ID 和一些自由文本。

我不需要从 EmployeeStatus 中保存对 Employee 的引用,状态的管理将完全通过 Employee 实体完成 - 添加到 IList 属性。IE:我想很简单地做到以下几点;

我尝试了各种方法,包括创建一个单向一对多映射,其中 inverse 为假,级联设置为 all-delete-orphan,这一切看起来都应该工作,但它会生成一个关于无法设置的异常EmployeeStatus 中的 EmployeeId。我被引导相信这是因为 NHibernate 想要使用 EmployeeId 作为 NULL 进行插入,然后将其更新为父级的 ID。

我想我在这里遗漏了一些东西,所以很简单 - 谁能告诉我我的映射文件应该是什么样子才能实现上述目标?

提前致谢

托尼

-- 编辑:这是所要求的类的粗略概念 --

0 投票
4 回答
827 浏览

php - PHP并输出一对多结果

到目前为止,我只处理了 php 中的一对一关系,但我遇到了一个涉及一对多关系的问题。我已经坐了几天没有运气,所以我迫切希望有人介入并在我失去理智之前向我展示解决方案。

在我的数据库中有一系列 url,这些 url 由 SELECT 查询以及来自不同表的各种其他字段接收。每个 url 至少有一个与之关联的类别,但可以有多个类别。所以在我的结果中,我可能会看到一些看起来像这样的东西:

我有这个工作,有点。当我使用while循环和mysql fetch数组循环并打印它们时,结果看起来与上面完全一样。太好了,除了我需要的是它读取类似的内容:

因此,基本上每个 url 的所有类别都以某种方式组合在一起,因为它们被打印出来。我的第一次尝试让我尝试了一个嵌套的 while 循环,但它没有用,我不确定这是否可行。除此之外,我想知道我是否可能需要一个多维数组(完全猜测,我以前从未使用过)。

我按照上面的链接 id 对这些结果进行排序,所以我知道当前循环迭代中的链接 id 是否与上一次迭代中的链接 id 匹配 - 那么我有一些具有多个类别的东西。我想我是真的很接近,但我就是想不通。

有任何想法吗?

0 投票
1 回答
748 浏览

hibernate - 如何从 EJB3/JPA 中的集合中急切地获取单个“默认”实体

我有一个带有多个电话号码的 Person 实体。

现在我想为急切获取的 Person 实现一个“获取默认电话号码”方法。此默认电话号码是 phoneNumbers 集中的电话号码之一。有没有办法做到这一点?

我试图实现这一点的原因是在一个页面上列出了这个默认电话号码,该页面列出了数据库中的“所有”人员。

作为一名 JPA 初学者,我最初使用以下方法进行了尝试:

但这当然会导致列表页面非常缓慢。

那么有没有办法定义一个瞬态属性,该属性根据某些查询从实体集合中获取单个实体?我使用 Hibernate 作为我的持久性提供程序。

0 投票
1 回答
274 浏览

nhibernate - NHibernate 映射问题

我有以下对象模型:

  • Element一个有很多孩子和后代的顶级抽象类。
  • 一个班Event
  • 每个都Element包含一袋Events。
  • 每个Event都有一个指向 parent 的指针Element

到目前为止 - 相当标准的一对多关系。

但是,我想根据具体的类策略使用表。因此,该类Element未映射到数据库。我试图以这种方式解决它:每个具体的后代都Element定义了自己的 Bag of Events。这样做的问题是每个<bag>元素都包含一个<key>元素。该关键点指向 的Parent属性Event。它还使s 表Parent中的列成为Event包含 Bag 的表的外键!但是一列不能是多个表的外键,我在插入时遇到异常。

我还尝试使s 表Parent中的字段Event成为多对任意类型的字段。那行得通。但是当我想使关系双向时,意味着将包添加到我的后代中,Element我又回到了同样的问题。包 => 外键 => 插入异常。

我确信这个案例并不像看起来那么独特。预先感谢您的帮助。

0 投票
3 回答
14698 浏览

c# - NHibernate 一对多映射问题

我必须映射两个具有外键关系的简单表。其中一个表是Contact包含列id(int 类型的主键)、nameaddressguid(新添加且不是主键)。另一个是phone__number包含列id(int 类型的主键)、 contact ___ id (联系人表中 id 的外键)和phone__number

Contact 表的映射文件如下:

Phone_number 表的映射文件是:

Contact 和 PhoneNumber 类是:

当我分别加载联系人和电话号码时,它可以工作,但是在添加 set 元素以获得一对多关系后,nhibernate 给出了一个错误:

NHibernate.MappingException:为类型 OfflineDbSyncWithNHibernate.Models.Contact 指定的映射信息无效,请检查映射文件中的属性类型不匹配

我是 nHibernate 的新手,所以我不确定 set 元素是否有错误,或者我什至不应该使用它。任何帮助将不胜感激。