问题标签 [many-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 投票
5 回答
19739 浏览

java - 使用 Hibernate Criteria 查询多对多关系

我不确定如何描述这个问题,所以我认为一个例子是问我问题的最佳方式:

我有两个具有多对多关系的表:

DriversLicence <-> LicenseClass

LicenceClass 是“汽车”、“摩托车”和“中刚性”之类的东西。

使用 Hibernate Criteria,我如何找到同时具有“汽车”和“摩托车”LicenceClasses 的所有许可证?

更新 12/11/2008 我发现这可以通过使用自定义 ResultTransformer 轻松实现。然而问题是结果转换器仅在查询返回其结果后应用,它实际上并没有成为 SQL 的一部分。所以我想我现在的问题是“你能做我最初在 SQL 中描述的事情吗?是否有 Hibernate Criteria 模拟?”

0 投票
4 回答
361 浏览

nhibernate - 如何在我的 API 中处理多对多关系

我有两个实体 Foo 和 Bar,它们之间存在多对多关系。

假设对于为什么 Foo 可能对多对多关系“负责”没有语义论据,但是我们任意决定 Foo 负责该关系(即,在 NHibernate 中,我们将 Bar 标记为 Inverse)

从数据库的角度来看,这一切都很好,但是我的实体 API 揭示了一个问题。

如果我们决定 Foo 负责这种关系,我如何在不创建甚至不应该存在的公共 Bar.AddFoo() 方法的情况下更新 Bar 中的关联集合?

我觉得我应该能够保持我的域模型的完整性,而不必在这样的操作之后从数据库中重新加载这些实体。

更新:受评论者启发的代码调整。

0 投票
3 回答
2201 浏览

sql - MySQL严格选择涉及多对多表的行

我有三个多对多格式的表。即,表 A、B 和 AB 已按您的预期设置。

给定一组 A id,我只需要选择 AB 中与所有 id 匹配的行。

像下面这样的东西是行不通的:

"SELECT * FROM AB WHERE A_id = 1 AND A_id = 2 AND A_id = 3 AND ..." 因为单行不会有多个 A_id

使用 sql 语句中的 OR 并没有更好,因为它产生的结果是所有具有至少一个 A id 的结果(而我只想要那些具有所有 id 的行)。

编辑:

对不起,我应该解释一下。我不知道实际的多对多关系是否与实际问题相关。这些表格概述如下:

所以我有一个人员列表,一个选项列表,以及一个选项和人员表。

因此,给定一个选项 ID 列表,例如 (1, 34, 44, ...),我只需要选择那些拥有所有选项的人。

0 投票
7 回答
10637 浏览

sql - SQL如何搜索多对多关系

我有一个包含两个主表noteslabels. 它们具有多对多的关系(类似于 stackoverflow.com 对标签的问题)。我想知道的是如何使用 SQL 使用多个标签搜索笔记?

例如,如果我有一个带有三个标签“一”、“二”和“三”的便笺“test”,而我有一个带有标签“一”和“二”的第二个便笺“test2”,那么 SQL 查询将是什么?找到所有与标签“一”和“二”相关的笔记?

0 投票
1 回答
391 浏览

mysql - 类似 Twitter 的“关注用户”和“观看这个”问题

处理多对多触发关系的最佳方法是什么,例如 Twitter“关注此用户”问题。

我对用户“观看”线程的回复有类似的问题。如果有 10,000 个用户在观看一个帖子,并且有人回复,那么如何最好地通知观看者?我能想到的只有以下几点:

插入后,检查“监视表”[字段:user_id,thread_id] 是否有任何匹配此线程 ID 的线程。这是我需要通知的用户列表。对于每个需要通知的用户,在“通知表”[字段:user_id、message、addon 等]中插入一行。现在我可以通过这个表向任何用户显示他们的通知。

问题是,这一切听起来非常非常昂贵。尤其是 10,000 刀片部分。

必须有更好的方法来做到这一点......想法?

0 投票
3 回答
354 浏览

database - 帮助处理多对多关系

我的表中存在多对多关系的问题,这是在培训中心工作的员工和讲师之间的关系。我找不到它们之间的链接,我不知道如何获得它。员工字段是:

  • 职工号。
  • 员工姓名
  • 公司名称
  • 部门职称
  • 商业领域
  • 手机号码
  • 分机
  • 排行

讲师字段是

  • 导师姓名
  • 研究所
  • 手机号码
  • 电子邮件地址
  • 费用
0 投票
1 回答
3941 浏览

c# - Linq2Sql Many:很多问题,你会怎么做?

我知道很多:Linq2Sql 不支持很多,但我正在研究一种解决方法

我正在使用我的小 SO 克隆,我有一个带有问题的表和一个带有标签的表和一个链接表 QuestionTag,所以我在问题和标签之间有一个经典的多:多关系。

为了在首页显示问题列表,我有这个类,我想从 Linq2Sql 查询中填写

问题是我应该如何填写标签集合。我发现这不可能在 1 个单一查询中完成,因此我将其分为 2 个查询,1 个用于获取问题,1 个用于获取标签,然后尝试加入它们。我知道 Entity 框架支持 many:many 那么他们是如何做到的呢?你会怎么做?任何替代方法?查询当然应该是有效的。

0 投票
5 回答
13157 浏览

sql - 您如何进行多对多表外连接?

我有 3 张桌子,foo、foo2bar 和 bar。foo2bar 是 foo 和 bar 之间的多对多映射。以下是内容。

我要请求的是,“给我一份所有 fid 和 zid 为 30 的值的列表”

我希望得到所有 fid 的答案,因此结果如下所示:

0 投票
1 回答
1367 浏览

.net - 如何在实体框架中实现从实体到自身的多对多关联?

我有一个实体,它公开了一组相同类型的孩子。实体本身可以是另一个实例的孩子——实际上是与自身的多对多关系。在数据库中,我有一个包含两列的链接器表 - parentId 和 childId - 两者都引用了我的实体表中的 Id 列。Entity Framework 正确识别出它与自身是多对多关系但抛出错误:

从第 249、300 行开始的映射片段中的问题:具有可能不同键的两个实体被映射到同一行。确保这两个映射片段将 AssociationSet 的两端映射到对应的列

有什么想法可以做到这一点吗?

0 投票
2 回答
1153 浏览

c# - 是否可以添加多对多关系而不在 NHibernate 中初始化集合?

这是我的课:

这是我的映射:

这是问题所在:

在最后一行 [user.Friends.Add(friend)],我注意到它会在添加新朋友之前初始化 Friends 集合。

我的问题是:在 NHibernate 中是否有避免这种行为?因为出于性能原因,我只想执行单个 INSERT 命令。