0

SQL Server データベースに 2 つのテーブルがあります。

category( 
   itemid, 
   parentid
)

ArticleAssignedCategories(
   categid, 
   artid
)

categidの外部キーですitemid

artids与えられたの数とその子を取得したい(子は与えられたのitemidカテゴリを意味します。)parentiditemid

例えば; 与えられitemid = 1、表categoryに (3,1),(4,1)(5,3) がある場合

3、4、5 はすべて 1 の子です

良いクエリを書くのを手伝ってくれる人はいますか?

4

2 に答える 2

1

CTEを使用して再帰クエリを実行できます

with CTE(itemid, parentid)
as (
  -- start with some category
  select itemid, parentid
  from category where itemid = <some_itemid>
union all 
  -- recursively add children
  select c.itemid, c.parentid
  from category c 
  join CTE on c.parentid = CTE.itemid
)
select count(*)
from ArticleAssignedCategories a
join CTE on CTE.itemid = a.categid
于 2013-08-26T11:35:38.003 に答える
0

これがクエリです。これがあなたに役立つことを願っています

select b.artid,count(b.artid) from category a
inner join ArticleAssignedCategories b on a.itemid = b.artid
group by b.artid
于 2013-08-26T11:32:46.777 に答える