문제 내가 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를 반환해야합니다. 카테고리 스포츠, 축구, 하키.