Есть база примерно такой структуры:
CREATE TABLE [dbo].[Categories] (
[CategoryId] int IDENTITY (1, 1) PRIMARY KEY,
[Name] nvarchar(50),
CONSTRAINT [CU_Categories_Name] UNIQUE ([Name])
) ON [PRIMARY]
CREATE TABLE [dbo].[Tags] (
[TagId] int IDENTITY (1, 1) PRIMARY KEY,
[Name] nvarchar(50),
CONSTRAINT [CU_Tags_Name] UNIQUE ([Name])
) ON [PRIMARY]
CREATE TABLE [dbo].[Pubs] (
[PubId] int IDENTITY (1, 1) PRIMARY KEY,
[Date] datetime,
[Title] nvarchar(400),
[Content] ntext,
) ON [PRIMARY]
CREATE TABLE [dbo].[PubCategories] (
[PubCategoryId] int IDENTITY (1, 1) PRIMARY KEY,
[PubPtr] int,
[CategoryPtr] int,
) ON [PRIMARY]
CREATE TABLE [dbo].[PubTags] (
[PubTagId] int IDENTITY (1, 1) PRIMARY KEY,
[PubPtr] int,
[TagPtr] int,
) ON [PRIMARY]
ALTER TABLE [PubCategories] WITH CHECK ADD FOREIGN KEY ([PubPtr]) REFERENCES [Pubs] ([PubId]) ON DELETE NO ACTION
ALTER TABLE [PubCategories] WITH CHECK ADD FOREIGN KEY ([CategoryPtr]) REFERENCES [Categories] ([CategoryId]) ON DELETE NO ACTION
ALTER TABLE [PubTags] WITH CHECK ADD FOREIGN KEY ([PubPtr]) REFERENCES [Pubs] ([PubId]) ON DELETE NO ACTION
ALTER TABLE [PubTags] WITH CHECK ADD FOREIGN KEY ([TagPtr]) REFERENCES [Tags] ([TagId]) ON DELETE NO ACTION
Каким образом можно получить публикации для набора определенных категорий и тегов?
То есть: если я запрашиваю публикации для категории «Наука» и «Сотрудничество» содержащие теги «Достижения» и «Зарубежные связи» (категорий и тегов, в запросе, может быть указано несколько, а может и не быть сообще), то должны вернуться все публикации, которые подписаны на данные категории и теги.
В общем то, это типичная задача блогостроения, но не могу понять, как ее решить.