4 votes

Sélection récursive des catégories

Dans ma base de données, j'ai la table suivante :

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

La table a le contenu suivant :

Contents of the Table

Maintenant, j'ai besoin de récupérer tous les noms de toutes les sous-catégories de la catégorie. Computer Science en utilisant le with-clause dans une déclaration récursive. Cette opération doit être effectuée en utilisant SQL, et non PHP ou un autre langage de programmation.

Par "toutes les sous-catégories", on entend non seulement les descendants directs, mais aussi, dans ce cas, les personnes suivantes C++ y Java Comment dois-je m'y prendre ?

Ce que j'ai jusqu'à présent :

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

4voto

Jaime Points 487

C'est parti :

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

0voto

user1696521 Points 11

Si votre base de données est oracle, vous pouvez l'essayer ( outil de recherche sql ) :

select * from category 
  start with name = 'Computer Science'
connect by prior name = top_category

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X