2016-08-15 7 views
-4

У меня есть ниже структуры таблицы в SQL Server 2008:Получить список категорий с SQL Server 2008

  1. Статья (магазины статьи)
  2. Категория (категория магазины)
  3. ArticleToCategory (магазины статьи и категории ссылок, так как одна статья может быть помечена в несколько категорий).

Теперь я хочу получить категории (со статьей), статьи которых не помечены ни в одну другую категорию).

+0

Прохладный. Удачи. –

ответ

1
Create table Article 
(
    articleID int, 
    articlename nvarchar(50) 
) 
create table Category (
categoryId int, 
categoryname nvarchar(50) 
) 
create table ArticleToCategory 
(categoryid_fk int, 
articleid_fk int 
) 
Select categoryID_fk,count(articleID_fk) 
from ArticleToCategory Ac1 
where not exists (select 1 from ArticleToCategory ac2 where ac1.articleid_fk=ac2.articleID_fk and ac1.categoriyid_fk<>ac1.categoryID_fk) group by categoryID_fk 

Вышеупомянутое предоставит вам количество только тех статей для каждой категории, где эта статья не связана с другими категориями.

Select a.categoryID_fk,count(1) 
from ArticleToCategory a where a.categoryid not in (
Select ac1.categoryID_fk 
from ArticleToCategory Ac1 
inner join ArticleToCategory ac2 on ac1.articleid_fk=ac2.articleID_fk and ac1.categoriyid_fk<>ac1.categoryID_fk) 

abovequery даст вам счетчик для каждой категории, где ни один из соответствующей статьи не привязывается к другим категориям.

Пожалуйста, выберите соответствующий вариант.