繁体   English   中英

从一个表返回数据以及从另一个表映射数据的SQL最佳方法

[英]SQL Best way to return data from one table along with mapped data from another table

我有以下问题。

我有一个 Entries包含2列:

  • EntryID唯一标识符
  • Name -某些名称

我还有另一个EntriesMapping 多对多映射表),其中包含2列:

  • EntryID是指EntryID中的Entries
  • PartID是指PartID在seprate Parts表。

我需要写一个SP将从返回的所有数据 Entries表,但在每一行Entries表我想提供所有的列表 PartID是在注册的EntriesMapping表。

我的问题是,鉴于SP的结果将由应用定期处理,因此如何最好地解决此问题,因此性能非常重要。

1.我是否编写了一个将为每个条目选择多行的SP-如果给定条目注册了多个PartID ,则我将返回多行,每行具有相同的EntryIDName但具有不同的PartID

要么

2.我是否编写了一个SP,它将在Entries表中的每个条目中选择1行 ,并具有一个字符串/ xml / json字段,其中包含所有不同的PartID

要么

3.我没有想到其他解决方案吗?

在我看来, 解决方案1是更好的方法,但是我将传递大量重复数据。

解决方案2不会传递额外的数据,但是string / json / xml将需要额外处理,从而导致每个项目的CPU时间更长。

PS:我觉得这是一个很普遍的问题,但是我找不到任何可以提供通用解决方案或不同方法利弊的资源。

我认为您需要简单的JOIN

SELECT e.EntryId, e.Name, em.PartId
FROM Entries e
JOIN EntriesMapping em ON e.EntryId = em.EntryId

这将返回您想要的内容,不需要存储过程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM