查询或合并一对多关系而不复制结果条目

Posted

技术标签:

【中文标题】查询或合并一对多关系而不复制结果条目【英文标题】:Querying or Merging One-to-Many Relationship without Duplicating Entries of the Result 【发布时间】:2019-01-28 03:13:15 【问题描述】:

我有 2 个非常大的数据集。第一个“主表”是一个唯一的列表。第二个“参考表”与“主表”是一对多的关系。

目标: 使用过滤器查询两个数据集,但显示结果而不复制“主表”的条目。我不希望用户仅仅因为一对多“参考表”的字段是高度唯一的而滚动浏览同一行项目的 200 行。

有什么技术可以解决这个问题吗?

我能想到的只是将“参考表”的行作为列顺序附加到“主表”中,例如; a_1、b_1、a_2、b_2、...

以下是数据集的示例: data

我正在使用 C#、ASP.NET、SQL Server 2016、实体框架

【问题讨论】:

如果您需要以表格格式显示此数据,那么您可以使用父表和子表,其中主表数据显示在父表中,并且每一行都有一个图标来展开/折叠数据,一旦用户展开该行然后子表将被加载它的参考记录...datatables.net/examples/api/row_details.html 太好了,谢谢 【参考方案1】:

您可以通过将查询分成两部分来获得很多功能:

using (MainContext ctx = new MainContext()) 
  var rows =  from main in ctx.Main
              select new 
              
                Main = main,
                References = from r in ctx.References
                             where r.Id == main.Id
                             select r
              

  // Do something with your rows

这将向数据库发送一个查询,并在Main 中的每行返回一个实体,其中一个单独的属性将包含所有Main 行的元数据。

如果您使用例如 WebAPI 调用将其发送回客户端,则客户端上的数据将如下所示:

[
  main:  id: ..., x: ..., y: ..., z: ...,
  references: [ a: ..., b: ... , a: ..., b: ... , ... ]
,
...,
]

【讨论】:

如果你接下来解释你想如何使用数据,我可以详细说明如何操作数据 您能否查看***.com/questions/52141824/… 以获取有关数据/逻辑的更多详细信息。我认为您在这里的回答与这个问题有关。 问题被删除了? 我暂时解决了这个问题。请检查这个:***.com/questions/52324549/…

以上是关于查询或合并一对多关系而不复制结果条目的主要内容,如果未能解决你的问题,请参考以下文章

sql中一对多关系的查询结果的多行转换成一行多列

sql 一对多的查询

多条SQL语句对查询结果集的垂直合并

excel如何实现一对多查询

查找一对多关系中的最新测量?

Django模型加入一对多关系以在模板中显示