我有一張Carid,Make,Mode,Version,State,City,MinPrice,Maxprice ,爲8列。 我想實現一個帶有4個輸入參數的搜索算法:Make,City,MinPrice,MaxPriceSQL搜索查詢,如何爲每個輸入參數分配權重,以及如何按輸入參數的權重對結果進行排序,
如何爲每個輸入參數分配權重。
請指導我寫出搜索查詢,首先給出AND結果,然後根據4個輸入參數的權重對OR結果進行跟蹤和結果。
我有一張Carid,Make,Mode,Version,State,City,MinPrice,Maxprice ,爲8列。 我想實現一個帶有4個輸入參數的搜索算法:Make,City,MinPrice,MaxPriceSQL搜索查詢,如何爲每個輸入參數分配權重,以及如何按輸入參數的權重對結果進行排序,
如何爲每個輸入參數分配權重。
請指導我寫出搜索查詢,首先給出AND結果,然後根據4個輸入參數的權重對OR結果進行跟蹤和結果。
嘗試類似:
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
嗨馬克。非常感謝。它的工作。AND結果的一部分是好的。來到OR結果的一部分,我想先給出第一個參數,然後第二個首選項爲City.I,意思是OR結果的顯示或結果。在OR結果中,我指的是每個結果行,例如,在結果行中如果Make等於輸入參數Make,那麼該結果行應立即顯示在OR結果中。在結果行中,如果Make與輸入參數Make不相等,並且如果City等於輸入城市,則該結果行應在OR結果中顯示第二個...請通知我。謝謝。 – 2012-02-18 06:18:16
想補充以上評論,Make的重量超過了城市。城市的權重大於MinPrice。例如Make的權重= 3,城市的權重= 2,MinPrice的權重= 1,MaxPrice的權重= 1,以便我以所需順序得到結果,謝謝 – 2012-02-18 06:36:49
@ChethanBabuR :您好Chethan,答案是修改''case'從條件''順序'then'的值來匹配所需的權重 - 我已經相應地更新了我的答案。 – 2012-02-18 11:41:43
你的問題不明確。請提供樣本數據,樣本輸入參數和預期輸出。 – 2012-02-17 14:11:22
明確解釋這句話:「請告訴我寫搜索查詢,先給出AND結果,然後OR結果跟隨AND結果,並根據4個輸入參數的權重。」很難理解你想要什麼 – 2012-02-17 14:12:59