4

在我的数据库中,我有下表:

Category: {[Name: VarChar, TopCategory: VarChar]}

该表有以下内容:

表格内容

Computer Science现在我需要使用with-clause递归语句从该类别的所有子类别中获取所有名称。这必须使用 SQL,而不是 PHP 或其他编程语言来完成。

所有子类别不仅意味着直接后裔,而且在这种情况下C++Java 我该怎么做?

到目前为止我所做的:

SELECT name FROM category WHERE (topcategory = 'Computer Science')
4

2 回答 2

4

开始了:

WITH RECURSIVE cte_t1 (name, topcategory, Level)
AS
(
SELECT name, topcategory, 0 AS Level
FROM Category
WHERE topcategory = N'ComputerScience'
UNION ALL
SELECT t1.name, t1.topcategory, Level + 1
FROM Category t1, cte_t1 ctet1
WHERE ctet1.name= t1.topcategory
)
SELECT Level, topcategory, name
FROM cte_t1
于 2012-09-28T07:31:04.050 回答
0

如果你的数据库是 oracle,你可以试试(sql fiddle):

select * from category 
  start with name = 'Computer Science'
connect by prior name = top_category
于 2012-09-28T07:37:48.000 回答