Heim > Datenbank > MySQL-Tutorial > Wie rufe ich rekursive Kategorien in einer einzelnen MySQL-Abfrage ab?

Wie rufe ich rekursive Kategorien in einer einzelnen MySQL-Abfrage ab?

Barbara Streisand
Freigeben: 2024-11-10 19:41:02
Original
740 Leute haben es durchsucht

How to Retrieve Recursive Categories in a Single MySQL Query?

Rekursiver Kategorieabruf mit einer einzigen MySQL-Abfrage

In Webanwendungen ist die Organisation von Inhalten in hierarchische Kategorien üblich. Eine komplexe Kategoriestruktur, beispielsweise ein Baum, erfordert beim Abruf eine spezielle Handhabung. In diesem Artikel wird der effizienteste Weg untersucht, rekursive Kategorien mit einer einzigen MySQL-Abfrage abzurufen.

Der Aufbau des Kategoriebaums in PHP mithilfe von Referenzen optimiert den Prozess. Eine Abfrage ruft Kategorien und ihre übergeordneten IDs ab, die in einem assoziativen Array ($nodeList) gespeichert werden. Das Array ist so strukturiert, dass hierarchische Referenzen erstellt werden, bei denen das übergeordnete Element jedes Knotens in seinem „übergeordneten“ Schlüssel erscheint.

Die Baumkonstruktion erfolgt im folgenden Code:

foreach ($nodeList as $nodeId => &$node) {
    if (!$node['parent'] || !array_key_exists($node['parent'], $nodeList)) {
        $tree[] = &$node;
    } else {
        $nodeList[$node['parent']]['children'][] = &$node;
    }
}
Nach dem Login kopieren

Diese Schleife iteriert über die Knoten , und wenn ein Knoten keinen übergeordneten Knoten hat oder der übergeordnete Knoten nicht im Array vorhanden ist, wird der Knoten dem $tree-Array hinzugefügt. Andernfalls wird der Knoten als Kind zum „Children“-Array seines Elternknotens hinzugefügt.

Das Ergebnis ist eine hierarchische Baumstruktur, die im $tree-Array gespeichert ist, wobei jeder Knoten Kinderreferenzen enthält. Dieser Einzelabfrage-Ansatz ist deutlich schneller als die Verwendung rekursiver MySQL-Abfragen, selbst für große Kategoriebäume.

Das obige ist der detaillierte Inhalt vonWie rufe ich rekursive Kategorien in einer einzelnen MySQL-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