【发布时间】:2015-11-20 01:16:57
【问题描述】:
我有两个表,类别和文章。文章具有将它们与类别相关联的 FK。 Category 表是分层的,因此每个类别都有一个指向另一个 Category 的 CAT_FK_Parent,如果它是顶级类别,则为 NULL。
我要做的是按类别对文章进行排序,并仅显示列表中与文章直接关联的类别,或具有关联文章的子/子子项的类别。
所以现在我的代码看起来像:
SELECT TOP 1000 [CAT_PK]
,[CAT_Description]
,[CAT_FK_Parent]
,[CAT_CanHaveChildren]
,[CAT_EMP_FK]
,[CAT_Action]
,[CAT_Active]
,[CAT_Autoclose]
,[CAT_ROL_Name]
FROM [TicketCategories]
WHERE
((SELECT COUNT(1) FROM WikiArticles WHERE WAR_CAT_FK = CAT_PK AND WAR_Active=1) ) > 0
这将返回 WAR_CAT_FK 与它们自己相同的类别,但不考虑孩子。
由于类别下可以有任意数量的子级别,我假设我需要某种递归函数来计算所有子级,但我在为递归 WHERE 条件查找资源时遇到了麻烦。
【问题讨论】:
-
您的意思是“或具有关联文章的子/子的类别。”
标签: sql-server sql-server-2012