Dans de nombreux projets — e-commerce, annuaires professionnels, plateformes de services, systèmes de catégories et sous-catégories — il est fréquent d’avoir une structure hiérarchique d’entités :
Catégories → Sous-catégories
Domaines d’activité → Sous-domaines
Rubriques → Sous-rubriques
Et souvent, l’un des besoins les plus courants est le suivant.
Compter le nombre d’éléments (produits, prestataires, appels d’offres…) associés à une catégorie, en incluant automatiquement tous les sous-niveaux.
Cet article explique comment compter toute la hiérarchie sans limite, même si celle-ci possède plusieurs niveaux (3, 5, 10…).
Contexte
Nous avons 2 tables:
activity_domain ( contient les domaines d'activités hiérarchisées ).
appel_offre ( Chaque entité est lié à un domaine d'activité ).
On commence par récupérer uniquement les domaines racines.
WITH RECURSIVE domain_tree AS (
SELECT id, name, parent_id
FROM activity_domain
WHERE parent_id IS NULL
)
SELECT * FROM domain_tree;