0

我们正在使用 ASP.NET 和 sql server 开发一个网站。我们希望提供细化搜索,基本上可以根据一个或多个特定条件过滤我们的搜索结果。我们要显示所有细化搜索字段和计数(类似于亚马逊网站,搜索结果左侧显示几个字段并带有计数)


按价格
50 到 100 (10)
100 到 500 (50) ...

按发布日期
7 天内 (40)
15 天内 (90)
30 天内 (150)

等等 ...

我们的正常搜索使用多个搜索条件进行。我们正在使用 SQL Server,存储过程使用分页技术和每页的结果数。

因此,当您回答时,请考虑此信息并在可能的情况下提供有效的示例链接。

非常感谢。

4

1 回答 1

1

这只能通过对 sql server 过程和您的代码进行少量修改来完成。

将所有精炼元素作为变量保存到存储过程中。将精炼参数的值传递给 sql server 例如:如果 price 是精炼属性,则生成 2 个变量 @min_price 和 @max_price 将传递给存储过程并包含在分页和排序之前语句的 where 中发生。
编辑:
你的意思是你需要条件参数。在这种情况下使用ISNULL () 例如:您想要某个价格范围内的产品和具有某个类别的产品名称,即 Mobiles , Electronics 。现在,如果此 Category 参数为 null,那么我们需要避免比较。在这种情况下 :

SELECT * 
FROM Products p
WHERE 
p.Price BETWEEN @min_price AND @max_price
AND
p.Category = ISNULL(@category, p.Category)

现在在这种情况下发生的情况是,如果@category 参数为空,那么它将替换与类别本身的比较,即Mobile = Mobile,它将返回true。

如果要形成的查询过于复杂,那么动态 sql 查询是唯一的出路。但是尽量避免这些,因为没有为这些保存执行计划,因此会影响性能。

于 2012-07-06T10:04:05.750 回答