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

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

Barbara Streisand
Barbara StreisandOriginal
2024-11-10 19:41:02691Durchsuche

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;
    }
}

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!

Stellungnahme:
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