2012-02-17 18 views
1

我有一張Carid,Make,Mode,Version,State,City,MinPrice,Maxprice ,爲8列。 我想實現一個帶有4個輸入參數的搜索算法:Make,City,MinPrice,MaxPriceSQL搜索查詢,如何爲每個輸入參數分配權重,以及如何按輸入參數的權重對結果進行排序,

如何爲每個輸入參數分配權重。

請指導我寫出搜索查詢,首先給出AND結果,然後根據4個輸入參數的權重對OR結果進行跟蹤和結果。

+3

你的問題不明確。請提供樣本數據,樣本輸入參數和預期輸出。 – 2012-02-17 14:11:22

+2

明確解釋這句話:「請告訴我寫搜索查詢,先給出AND結果,然後OR結果跟隨AND結果,並根據4個輸入參數的權重。」很難理解你想要什麼 – 2012-02-17 14:12:59

回答

4

嘗試類似:

select * from [Car] 
where Make = @Make or 
     City = @City or 
     MinPrice >= @MinPrice or 
     MaxPrice <= @MaxPrice 
order by 
     case when Make = @Make then 3 else 0 end + 
     case when City = @City then 2 else 0 end + 
     case when MinPrice >= @MinPrice then 1 else 0 end + 
     case when MaxPrice <= @MaxPrice then 1 else 0 end 
     desc 
+0

嗨馬克。非常感謝。它的工作。AND結果的一部分是好的。來到OR結果的一部分,我想先給出第一個參數,然後第二個首選項爲City.I,意思是OR結果的顯示或結果。在OR結果中,我指的是每個結果行,例如,在結果行中如果Make等於輸入參數Make,那麼該結果行應立即顯示在OR結果中。在結果行中,如果Make與輸入參數Make不相等,並且如果City等於輸入城市,則該結果行應在OR結果中顯示第二個...請通知我。謝謝。 – 2012-02-18 06:18:16

+0

想補充以上評論,Make的重量超過了城市。城市的權重大於MinPrice。例如Make的權重= 3,城市的權重= 2,MinPrice的權重= 1,MaxPrice的權重= 1,以便我以所需順序得到結果,謝謝 – 2012-02-18 06:36:49

+0

@ChethanBabuR :您好Chethan,答案是修改''case'從條件''順序'then'的值來匹配所需的權重 - 我已經相應地更新了我的答案。 – 2012-02-18 11:41:43

相關問題