Maison >base de données >tutoriel mysql >Comment récupérer tous les sous-répertoires d'un répertoire spécifique dans MySQL avec une seule requête ?

Comment récupérer tous les sous-répertoires d'un répertoire spécifique dans MySQL avec une seule requête ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-05 13:53:44836parcourir

How to Retrieve All Subdirectories of a Specific Directory in MySQL with a Single Query?

Récupération de sous-répertoires dans une seule requête avec récursion MySQL

Considérons une table ressemblant à une structure de répertoires :

folders_table
-----------------------
- INT id_folder
- INT id_folder_parent
- VARCHAR folder_name

Le défi réside dans la récupération de tous les sous-répertoires d'un répertoire spécifique à l'aide d'un seul SELECT requête.

Solution :

Les structures de bases de données traditionnelles ne peuvent pas prendre en charge cette requête efficacement. Pour l'activer, la structure de la base de données doit être modifiée. Plus précisément, une relation d'auto-référencement est introduite pour représenter la hiérarchie.

Instructions étape par étape :

  1. Ajoutez une nouvelle colonne, left_index, pour suivre l'ordre des éléments à le même niveau.
  2. Ajoutez une nouvelle colonne, right_index, pour suivre l'ordre des éléments dans l'ensemble hiérarchie.
  3. Créez une nouvelle table avec ces colonnes : id_folder, id_folder_parent, left_index, right_index, Folder_name.

Une fois les modifications terminées, la requête suivante peut être utilisée pour récupérer un arbre de n'importe quelle profondeur en une seule requête :

SELECT *
FROM folders_table
WHERE left_index > (SELECT left_index FROM folders_table WHERE id_folder = <parent_folder_id>)
AND right_index < (SELECT right_index FROM folders_table WHERE id_folder = <parent_folder_id>)
ORDER BY left_index

Ressources pour aller plus loin Exploration :

  • [Stockage de données hiérarchiques dans une base de données (SitePoint)](https://www.sitepoint.com/hierarchical-data-database/)
  • [ Gestion des données hiérarchiques dans MySQL](https://www.qrypt.co.uk/blog/managing-hierarchical-data-in-mysql)

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn