我在我的網站上有一個頁面,其中有多個下拉框作爲過濾器。重寫此查詢以使其更具可擴展性
那麼該網頁的SQL程序是這樣的
IF @Filter1 = 0, @Filter2 = 0, @Filter3 = 0
BEGIN
SELECT * FROM Table1
END
ELSE IF @Filter1 = 1, @Filter2 = 0, @Filter3 = 0
BEGIN
SELECT * FROM Table2
END
在開始的時候,有每個過濾器,有沒有那麼多的排列只有幾個結果。但是,添加了更多的過濾器,現在有超過20個IF ELSE檢查。因此,如果每個過濾器有5個選項,我將需要做5 * 5 * 5 = 125 IF ELSE檢查以返回依賴於過濾器的數據。
更新 第一個過濾器改變了WHERE條件,第二個過濾器添加多個表的結果集,第三過濾器改變了ORDER BY條件
我怎樣才能讓這個查詢更具擴展性,使得我不必編寫一堆新的IF ELSE語句來檢查每個條件,每次除了使用動態SQL之外還將新的過濾器添加到列表中...
您是否真的從每個過濾器的不同表格中進行選擇,或者WHERE子句是否更改? – 2010-07-09 13:32:51
更新了我的問題以反映您的查詢 – super9 2010-07-09 13:36:47