1
我試圖寫一個存儲過程來選擇NewsItem列表記錄其中每個NewsItem擁有所有分類是的在一個列表中。如果列表爲空,那麼它應該返回所有新聞項目。
NewsItem NewsItemCategories Category
-------- ------------------ --------
NewsID NewsID CategoryID
Post CategoryID CategoryName
我通過逗號分隔的類別名稱的列表,以我的存儲過程,並創建了一個返回這些類別的表中的功能。
exec sp_GetNewsItems 'sport,football,hockey'
EntityNameColumn - table returned from my function BuildStringTable
----------------
sport
finance
history
我曾嘗試
select NI.NewsID, NI.Post
from NewsItem NI
where (@pCategories = '' or
(select COUNT(*)
from NewsItemCategories NIC
inner join Category C on NIC.CategoryID = C.CategoryID
inner join BuildStringTable(@pCategories) CT on C.CategoryName = CT.EntityNameColumn
where NIC.NewsID = NI.NewsID) > 0)
問題
如果你傳遞一個類別名稱的查詢工作,但是當你傳遞多個類別名稱不起作用。在上面的示例查詢中,這應該返回包含至少至少的NewsItems,Categories運動,足球,曲棍球。