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
Libérer: 2025-01-05 13:53:44
original
803 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal