Try something like this...Declare @pageKeyWords table (pageId int , wordId int)Insert Into @pageKeyWordsSelect 1,1Union All Select 1,3Union All Select 2,2Union All Select 3,1Union All Select 3,2Union All Select 3,3Union All Select 4,2Union All Select 4,3Declare @keyWords table (wordId int identity(1,1), word varchar(100))Insert Into @keyWords Select 'Word1' Union All Select 'Word2' Union All Select 'Word3'Declare @hasAll varchar(1000)Set @hasAll = 'Word1,Word2,Word3' Select C.PageId From dbo.Split(@hasAll,',') as A Inner Join @keyWords as B On A.data = B.word Inner Join @pageKeyWords as C On B.wordId = C.wordId Group By PageId Having count(*) = (Select count(*) From dbo.Split(@hasAll,','))Set @hasAll = 'Word2,Word3' Select C.PageId From dbo.Split(@hasAll,',') as A Inner Join @keyWords as B On A.data = B.word Inner Join @pageKeyWords as C On B.wordId = C.wordId Group By PageId Having count(*) = (Select count(*) From dbo.Split(@hasAll,','))Set @hasAll = 'Word4' Select C.PageId From dbo.Split(@hasAll,',') as A Inner Join @keyWords as B On A.data = B.word Inner Join @pageKeyWords as C On B.wordId = C.wordId Group By PageId Having count(*) = (Select count(*) From dbo.Split(@hasAll,','))
Corey