Heim > Datenbank > MySQL-Tutorial > Wie rufe ich alle Unterverzeichnisse eines bestimmten Verzeichnisses in MySQL mit einer einzigen Abfrage ab?

Wie rufe ich alle Unterverzeichnisse eines bestimmten Verzeichnisses in MySQL mit einer einzigen Abfrage ab?

Mary-Kate Olsen
Freigeben: 2025-01-05 13:53:44
Original
803 Leute haben es durchsucht

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

Abrufen von Unterverzeichnissen in einer einzelnen Abfrage mit MySQL-Rekursion

Stellen Sie sich eine Tabelle vor, die einer Verzeichnisstruktur ähnelt:

folders_table
-----------------------
- INT id_folder
- INT id_folder_parent
- VARCHAR folder_name
Nach dem Login kopieren

Die Herausforderung besteht darin, alle Unterverzeichnisse eines bestimmten Verzeichnisses mit einem einzigen SELECT abzurufen Abfrage.

Lösung:

Herkömmliche Datenbankstrukturen können diese Abfrage nicht effizient unterstützen. Um es zu aktivieren, muss die Datenbankstruktur geändert werden. Konkret wird eine selbstreferenzierende Beziehung eingeführt, um die Hierarchie darzustellen.

Schritt-für-Schritt-Anleitung:

  1. Fügen Sie eine neue Spalte, left_index, hinzu, um die Reihenfolge der Elemente zu verfolgen auf derselben Ebene.
  2. Fügen Sie eine neue Spalte, right_index, hinzu, um die Reihenfolge der Elemente insgesamt zu verfolgen Hierarchie.
  3. Erstellen Sie eine neue Tabelle mit diesen Spalten: id_folder, id_folder_parent, left_index, right_index, Folder_name.

Sobald die Änderungen abgeschlossen sind, kann die folgende Abfrage verwendet werden, um eine abzurufen Baum beliebiger Tiefe in einer Abfrage:

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
Nach dem Login kopieren

Ressourcen für weitere Exploration:

  • [Speichern hierarchischer Daten in einer Datenbank (SitePoint)](https://www.sitepoint.com/hierarchical-data-database/)
  • [ Hierarchische Daten verwalten in MySQL](https://www.qrypt.co.uk/blog/managing-hierarchical-data-in-mysql)

Das obige ist der detaillierte Inhalt vonWie rufe ich alle Unterverzeichnisse eines bestimmten Verzeichnisses in MySQL mit einer einzigen Abfrage ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage