Rekursive MySQL-Abfrage zum Abrufen hierarchischer untergeordneter Ordner mit unterschiedlichen Ebenen
Bei der Verwaltung hierarchischer Datenstrukturen, wie z. B. verschachtelte Ordner oder baumartige Beziehungen Es kann eine Herausforderung sein, alle Kinder und ihre potenziellen Nachkommen zu finden. In diesem Artikel wird eine MySQL-Abfrage vorgestellt, die diesem Bedarf durch rekursives Durchlaufen einer hierarchischen „Folder“-Tabelle effektiv gerecht wird.
Die in diesem Beispiel verwendete „Folder“-Tabelle hat drei Spalten: „idFolder“, „FolderName“ und „ idFolderParent‘, das die Eltern-Kind-Beziehung darstellt. Das Ziel besteht darin, alle untergeordneten Ordner, einschließlich untergeordneter Ordner, für einen bestimmten „idFolder“ in einer einzigen Abfrage abzurufen.
Eine der Herausforderungen früherer Lösungen bestand in der Handhabung von Fällen, in denen übergeordnete Ordner nicht in einem bestimmten Ordner gespeichert wurden Bestellung in der Datenbank. Um dieses Problem zu lösen, schlagen wir eine Abfrage vor, die auf der Funktion GROUP_CONCAT() und einer benutzerdefinierten Variablen basiert.
Die Abfrage:
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;
Diese Abfrage funktioniert wie folgt:
Dieser Ansatz gewährleistet dass alle untergeordneten Ordner und untergeordneten Ordner unabhängig von ihrer Position in der hierarchischen Struktur abgerufen werden, wodurch eine umfassende Liste für den angegebenen „idFolder“-Wert bereitgestellt wird.
Das obige ist der detaillierte Inhalt vonWie kann ich hierarchische untergeordnete Ordner in MySQL mit unterschiedlichen Ebenen rekursiv abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!