如何创建3个不同请求的组合以协同工作

时间:2011-03-01 12:39:14

标签: c# sql distinct

我会尝试用肉眼解释它:

表由

组成
  • 品牌
  • 模型
  • 版本
  • 颜色

搜索的逻辑是:

  1. 选择品牌,启用过滤器模型 - 第1层
  2. 选择型号,启用过滤器版本&类型&颜色 - 第二层
  3. 选择任何filter =版本或类型或颜色 - 第3层,这些是distict选择
  4. 如何创建逻辑,如果我选择不同版本,则选择创建查询,其中brand = @ brand,model = @ model,version = @ version。我需要根据以前的查询创建不同的类型和不同的颜色(如果可用)。

    如果有定义的逻辑,例如1.品牌,2。模型,3。版本,4。类型,5。颜色,那将是非常容易的。

    但我需要创建逻辑,我可以选择1.brand,2.model,3.color和version&类型将修改该查询。

    在SQL或C#中有一种很好的方法吗?

    由于

2 个答案:

答案 0 :(得分:1)

听起来你只需要使用C#根据选择的过滤器动态构建SQL查询。

答案 1 :(得分:0)

通过检查参数是否提供,可以在存储过程中支持“搜索”中未知数量的参数

CREATE PROC SomeSearch
  @param1 VARCHAR(10) = NULL,
  @param2 INT = NULL
  -- etc
AS
SELECT whatever
FROM MyTable
WHERE
  (@param1 IS NULL OR field1=@param1)
  AND (@param2 IS NULL OR field2=@param2)
-- etc

现在只需传递NULL(或者根本不传递参数 - 默认值为NULL),而不需要特定的过滤器。