我有一份网络报告需要从不同地区返回多个产品。 简化的查询将如下:
Select ProductName, ProductPrice
from Product
where Region in (Region1, Region2, Region 3)
用户从UI中选择区域。结果绑定到数据网格。它可能是多个地区。但结果将如下所示
ProductName, ProductPrice [Region 1] ProductPrice [Region 2] ...
Prod1
Prod2
....
产品与同一地区不同。某些地区的某些可能为空。要动态绑定到网格,我使用的是DataTable,然后为区域字段动态添加数据列。最简单的方法是循环每个区域查询的结果,然后按产品合并(1,2,3 ......)它可以工作,但速度很慢,特别是对于超过2K的行。我想知道是否有任何方法可以避免做嵌套循环。
答案 0 :(得分:1)
您使用的是SQL Server吗?如果是这样,您可以使用PIVOT
operator在该区域上进行转动。
答案 1 :(得分:0)
我认为我们可能需要更多关于您正在使用的查询和循环的信息,但是您可以使用AJAX吗?听起来你想让UI体验更加愉快,并且可以获得“按需”区域的信息
答案 2 :(得分:0)
对不起,下面的第一个答案是哑弹。如果我理解正确,您可以按产品顺序填充DataRows,循环结果集:
Select ProductName, ProductPrice, Region
from Product
where Region in (Region1, Region2, Region 3)
ORDER BY ProductID, Region
为每个新产品ID创建一个新的DataRow,每个区域都有一个带有ProductPrice值的DataColumn(或什么都没有)。
问题中缺少必要的详细信息,但总的来说,我建议让DBMS处理聚合(如果您使用的是数据库?)。二维聚合应该很快。
即使此方法不合适,也请尝试从您的数据源最小化查询次数。查询的数量永远不应该依赖于网格列/行计数。