Mysql
 sql >> Base de données >  >> RDS >> Mysql

Générer des fils d'Ariane de catégories stockées dans MySQL

J'aime utiliser le Chemin matérialisé , car elle contient essentiellement votre fil d'Ariane et facilite des opérations telles que la sélection de tous les descendants d'un nœud sans utiliser de requêtes récursives.

Modèle de chemin matérialisé

L'idée avec le modèle de chemin matérialisé est de lier chaque nœud de la hiérarchie à sa position dans l'arbre. Cela se fait avec une liste concaténée de tous les nœuds ancêtres. Cette liste est généralement stockée dans une chaîne délimitée. Notez le champ "Lignage" ci-dessous. CAT_ID NAME CAT_PARENT Lineage 1 Home . 2 product 1 .1 3 CD’s 2 .1.2 4 LP’s 2 .1.2 5 Artists 1 .1 6 Genre 5 .1. 5 7 R&B 6 .1. 5.6 8 Rock 6 .1. 5.6 9 About Us 1 .1

Parcourir le tableau

Select lpad('-',length(t1.lineage))||t1.name listing
From category t1, category t2
Where t1.lineage like t2.lineage ||'%'
    And t2.name = 'Home';
Order by t1.lineage;

Liste

Home
-product
–CD’s
–LP’s
-Artists
–Genre
—R&B
—Rock
-About Us