我们正在使用ASP.NET和SQL Server开发一个网站。我们希望提供精简搜索,基本上过滤我们针对一个或多个特定条件的搜索结果。我们想要显示所有精炼搜索字段和计数(类似于亚马逊网站,其中几个字段显示在搜索结果的左侧,带有计数)
像是一样的东西 按价格按发布日期
7天内(40)
15天内(90)
30天内(150)
依旧......
我们使用多个搜索条件进行常规搜索。我们正在使用SQL Server,并且存储过程使用分页技术和每页结果数。
因此,当您回答时,请考虑此信息并提供可用的示例链接。
非常感谢。
答案 0 :(得分:1)
这只能通过在sql server过程和代码中进行少量修改来完成。
将所有精炼元素作为变量保存到存储过程中。
将精炼参数的值传递给sql server,例如:
如果price是精炼属性,则将2变量@min_price和@max_price传递给存储过程,并在分页和排序发生之前包含在语句的位置。
修改:
你的意思是你需要条件参数。
在这种情况下使用ISNULL ()
例如:您需要特定价格范围内的产品和具有特定类别的产品名称,即手机,电子产品。现在,如果此Category参数为null,那么我们需要避免比较。在那种情况下:
SELECT *
FROM Products p
WHERE
p.Price BETWEEN @min_price AND @max_price
AND
p.Category = ISNULL(@category, p.Category)
现在在这种情况下,如果@category参数为null,则它将替换与Category本身的比较,即Mobile = Mobile将返回true。
如果要形成的查询过于复杂,那么动态SQL查询是唯一的出路。但是试着避免这些因为没有为这些保存执行计划,因此会有性能损失。