4

私のデータベースには、次の表があります。

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

表の内容は次のとおりです。

表の内容

次に、再帰ステートメントでComputer Scienceを使用して、カテゴリのすべてのサブカテゴリからすべての名前を取得する必要があります。with-clauseこれは、PHPやその他のプログラミング言語ではなく、SQLを使用して実行する必要があります。

すべてのサブカテゴリは、直接の子孫だけでなく、この場合も意味します。これを行う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

データベースがオラクルの場合は、試してみることができます(sql fiddle):

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