Requête MySQL récursive pour récupérer des dossiers enfants hiérarchiques avec différents niveaux
Lors de la gestion de structures de données hiérarchiques, telles que des dossiers imbriqués ou des relations arborescentes , retrouver tous les enfants et leurs descendants potentiels peut être un défi. Cet article présente une requête MySQL qui répond efficacement à ce besoin en parcourant de manière récursive une table hiérarchique « Dossier ».
La table « Dossier » utilisée dans cet exemple comporte trois colonnes : « idFolder », « FolderName » et « idFolderParent', qui représente la relation parent-enfant. L'objectif est de récupérer tous les dossiers enfants, y compris les dossiers sous-enfants, pour un « idFolder » donné en une seule requête.
L'un des défis rencontrés par les solutions précédentes était de gérer les cas où les dossiers parents n'étaient pas enregistrés dans un emplacement spécifique. commande dans la base de données. Pour pallier à cela, nous proposons une requête qui s'appuie sur la fonction GROUP_CONCAT() et une variable personnalisée.
La requête :
SELECT GROUP_CONCAT(lv SEPARATOR ',') FROM ( SELECT @pv:=(SELECT GROUP_CONCAT(idFolder SEPARATOR ',') FROM Folder WHERE FIND_IN_SET(idFolderParent, @pv)) AS lv FROM Folder JOIN (SELECT @pv:=5) tmp ) a;
Cette requête fonctionne de la manière suivante :
Cette approche garantit que tous les dossiers enfants et Les dossiers sous-enfants sont récupérés quelle que soit leur position dans la structure hiérarchique, fournissant une liste complète pour la valeur 'idFolder' donnée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!