0
這是怎樣的存儲過程將被結構化:默認空參數存儲過程返回立方結果
[dbo].[getSp] (
@Color varchar(10) = Null,
@Finish varchar(10) = Null,
@Height varchar(10) = Null,
@Type varchar(10) = Null,
@Trim varchar(10) = Null,
@Width varchar(10) = Null
)
這是數據的外觀之前searched..This數據是不完整的,但作爲一個例子來得到一個主意。每個組合將在這裏..
Color | Finish | Height | Type | Trim | Width |
Blue | Shiny | Tall | Toaster | Normal | 3.5 |
(NULL) | (NULL) | (NULL) | Toaster | (NULL) | 3.5 |
(NULL) | (NULL) | Tall | Toaster | Deco | 4 |
(NULL) | Shiny | Tall | Toaster | Deco | 4 |
Blue | Shiny | (NULL) | Toaster | Deco | 4 |
(NULL) | Shiny | Tall | Toaster | Deco | 4 |
(NULL) | Satin | Tall | Toaster | Deco | 4 |
Red | (NULL) | Tall | Toaster | Deco | 4 |
SELECT語句將有Type
作爲主查找現場,所以它看起來是這樣的:
SELECT * FROM TABLE WHERE Type = @Type And
(
..... Confused about this part,
)
但基本上,我想運行存儲過程爲僅包括那些組合,它們是在表中找到的行當僅與PARAMS的一部分調用,像這樣:
[getSp]
@Color='Blue',
@Finish='Shiny',
@Type='toaster'
的d的SP最終會返回此(每個組合)..
1. Blue Shiny Tall Toaster
2. Blue Shiny Toaster
3. Blue Tall Toaster
4. Blue Toaster
5. Tall Toaster
6. Shiny Toaster
7. Shiny Tall Toaster
所以我很困惑如何構建Where
語句在存儲過程中的每一個組合返回只有那些你在存儲過程PARAMS包括,但其餘參數(如Width
和Trim
)將被排除在搜索結果之外,默認情況下會以NULL
的形式傳遞。
我已經試過這沒有任何的運氣...
SELECT * FROM TABLE WHERE
Type = @Type AND
(
COLOR = COALESCE(@Color,COLOR) AND...
... for each other param
)
我已經試過這沒有任何的運氣...
SELECT * FROM TABLE WHERE
Type = @Type AND
(
(Color = @Color OR COALESCE(@Color,COLOR) IS NULL) OR...
... for each other param
)
我試圖構建SQL語句,但也失敗了。任何建議都會有幫助。
不回我要找的結果..其實它只返回像#1這樣的行,所有其他級別不會返回。 – 2012-04-18 08:01:16
將AND更改爲OR。 – 2012-04-18 17:14:09
這會返回太多不同的結果。 – 2012-04-18 22:17:09