2011-03-01 83 views
0

我會盡量在視覺上解釋:如何創建3個不同的請求組合共同努力

表由

  • 品牌
  • 模型
  • 版本
  • 顏色

搜索的邏輯是:

  1. 選擇品牌,使濾波器模型 - 第一層
  2. 選擇模型,使濾波器版本&型&顏色 - 二線
  3. 選擇的任何過濾器=版本或類型或顏色 - 第三層,這些是distict選擇

如何創建logi c如果我選擇不同的版本,則選擇創建查詢,其中brand = @ brand,model = @ model,version = @ version。我需要根據以前的查詢創建不同的類型和不同的顏色(如果可用)。

如果有定義的邏輯如1.品牌,2.型號,3.版本,4.型號,5.顏色,這將是相當容易的。

但我需要創建邏輯,我可以選擇1.brand,2.model,3.color和版本&類型將修改該查詢。

在SQL或C#中有這樣做的好方法嗎?

感謝

回答

1

聽起來像是你只需要使用C#依據是所選的過濾器來動態建立SQL查詢。

0

通過,如果該參數提供

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

現在只是傳遞NULL(或不經過帕拉姆在所有檢查支持的「搜索」,可以在存儲過程中做了一個未知的數量則params的 - 的當不需要特定的過濾器時,默認爲NULL)。

+0

但我明白這個問題的方式,如果選擇了三個,OP正在尋找其他兩個值的區別。 – jzd 2011-03-01 13:47:25