首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何合并数据库调用的结果?

如何合并数据库调用的结果?
EN

Stack Overflow用户
提问于 2009-02-08 15:29:06
回答 3查看 174关注 0票数 0

我有一个网络报告需要返回来自不同地区的多个产品。简化的查询将如下所示:

代码语言:javascript
复制
Select ProductName, ProductPrice 
from Product
where Region in (Region1, Region2, Region 3)

区域由用户从UI中选择。结果被绑定到一个数据网格。它可以是多个区域。但结果将如下所示

代码语言:javascript
复制
        ProductName,  ProductPrice [Region 1] ProductPrice [Region 2] ...
Prod1
Prod2
....

产品与同地域产品不同。在某些地区,有些可能是空的。为了动态绑定到网格,我使用了一个DataTable,然后为region字段动态添加数据列。最简单的方法是循环每个区域查询的结果,然后按Product (1,2,3...)合并它可以工作,但速度很慢,特别是对于超过2K的行。我想知道是否有任何方法可以避免嵌套循环。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-02-08 17:42:35

您是否在使用SQL Server?如果是这样,您可以使用PIVOT operator在区域上旋转。

票数 1
EN

Stack Overflow用户

发布于 2009-02-08 15:50:12

我认为我们可能需要更多关于您正在使用的查询和循环的信息,但是您能使用AJAX吗?听起来你想让用户界面体验变得更有趣,并且可以“按需”获得区域信息。

票数 0
EN

Stack Overflow用户

发布于 2009-02-08 16:35:05

很抱歉,下面的第一个答案是无效的。如果我理解正确的话,您可以在产品订单中填充DataRows,循环以下结果集:

代码语言:javascript
复制
Select ProductName, ProductPrice, Region 
from Product
where Region in (Region1, Region2, Region 3)
ORDER BY ProductID, Region

将为每个新的DataRow创建一个新的productID,并且每个区域都有一个具有ProductPrice值的DataColumn (或者不包含任何值)。

问题中缺少必要的细节,但通常我建议让DBMS处理聚合(如果您使用的是数据库?)。二维聚合应该是快速的。

  1. 在SQL查询中按地区和产品分组,并使用聚合函数来计算您的金额(例如,金钱、数量)。您应该获得一个(产品、组、数量)元组的结果集,其中数量是所需的聚合,或者在结果集中循环使用NULL
  2. In ASP.NET并构建数据表
  3. 将数据表绑定到网格控件

即使这种方法不适合,也要尽量减少来自数据源的查询的数量。查询的数量永远不应该依赖于网格的列/行计数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/525902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档