Let\'s say I have 2 tables like this :
Job Offers:
+----+------------+------------+
| ID | Name | Categories |
+----+--------
You can greatly simplify this to something like this.
SELECT
O.[ID] AS OfferID,
O.[Name] AS OfferName,
c.[CategoryName] AS CategoryName,
c.[CategoryID] AS CategoryID
FROM
JobOffers AS O
outer apply [dbo].[Split](O.[Categories], ',') s
left join Categories as C on c.CategoryID = s.Items
The concern I have is your splitter. If there is more than a single select statement the performance is going to suffer horribly. For a good explanation of various splitters available you can visit this article.
http://sqlperformance.com/2012/07/t-sql-queries/split-strings