我有一个网络报告需要返回来自不同地区的多个产品。简化的查询将如下所示:
Select ProductName, ProductPrice
from Product
where Region in (Region1, Region2, Region 3)区域由用户从UI中选择。结果被绑定到一个数据网格。它可以是多个区域。但结果将如下所示
ProductName, ProductPrice [Region 1] ProductPrice [Region 2] ...
Prod1
Prod2
....产品与同地域产品不同。在某些地区,有些可能是空的。为了动态绑定到网格,我使用了一个DataTable,然后为region字段动态添加数据列。最简单的方法是循环每个区域查询的结果,然后按Product (1,2,3...)合并它可以工作,但速度很慢,特别是对于超过2K的行。我想知道是否有任何方法可以避免嵌套循环。
发布于 2009-02-08 17:42:35
您是否在使用SQL Server?如果是这样,您可以使用PIVOT operator在区域上旋转。
发布于 2009-02-08 15:50:12
我认为我们可能需要更多关于您正在使用的查询和循环的信息,但是您能使用AJAX吗?听起来你想让用户界面体验变得更有趣,并且可以“按需”获得区域信息。
发布于 2009-02-08 16:35:05
很抱歉,下面的第一个答案是无效的。如果我理解正确的话,您可以在产品订单中填充DataRows,循环以下结果集:
Select ProductName, ProductPrice, Region
from Product
where Region in (Region1, Region2, Region 3)
ORDER BY ProductID, Region将为每个新的DataRow创建一个新的productID,并且每个区域都有一个具有ProductPrice值的DataColumn (或者不包含任何值)。
问题中缺少必要的细节,但通常我建议让DBMS处理聚合(如果您使用的是数据库?)。二维聚合应该是快速的。
即使这种方法不适合,也要尽量减少来自数据源的查询的数量。查询的数量永远不应该依赖于网格的列/行计数。
https://stackoverflow.com/questions/525902
复制相似问题