0

我正在一个网站上工作,该网站具有针对大型记录集的向下钻取功能。

假设我有以下记录集:

tblBrand (ID, Name, PriceFrom, PriceTo, BHPFrom, BHPTo)

1, Audi, 170000, 340000, 100, 250
2, BMW,  250000, 290000, 110, 400
3, Ford, 275000, 500000,  75, 150
4, Kia,  110000, 250000,  50, 100
5, VW,   135000, 460000,  50, 200

对于用户,我将默认显示所有记录。在我的向下钻取功能中,我向用户展示如下 URL:

Price:
0-100000 (0 brands)
100000-200000 (3 brands)
200000-300000 (5 brands)
300000-> (3 brands)

BHP:
0-100 (3 brands)
100-200 (5 brands)
200-> (3 brands)

到目前为止,一切都很好。我在这里得到了按范围计数问题的解决方案:将范围分组到一个范围

但是当用户单击我的向下钻取链接之一时,就会出现我的问题。假设他点击“BHP 0-100”。那么它只会显示 tblBrand ID 3,4,5。这当然很容易使用简单的 WHERE 子句。但这是我的问题:

在用户通过选择“BHP 0-100”完成第一次深入分析后,如何向用户显示每个价格范围的品牌数量和每个 BHP 范围的品牌数量?

目前,我的解决方案(可行)是在向下钻取到临时表后插入生成的记录集,并对该表执行所有新计数。这是一种简单的方法,但是有 100k+ 条记录和 +/- 20 种类型的向下钻取可能性,每一种都有 5-20 个范围,这将成为一项非常繁重的任务!

更新:这就是我正在做的(pseudecode):

SELECT INTO #DrillDownRecordset (ID, Name)
FROM tblBrand
WHERE BHPFrom > @SelBHPFrom AND BHPTo < @SelBHPTo

SELECT COUNT (ID)
FROM #DrillDownRecordset
GROUP BY PriceRanges

SELECT COUNT (ID)
FROM #DrillDownRecordset
GROUP BY BHPRanges

这工作,但很重..

我可以考虑使用 ROLLUP 吗?

4

0 回答 0