Abfragen hierarchischer Daten in MySQL ohne „Connect By Prior“
In MySQL, trotz des Fehlens einer expliziten „Connect By Prior“-Klausel ist es möglich, hierarchische Daten mithilfe einer Kombination rekursiver Techniken abzurufen.
Rekursive Traversierung Algorithmus
Um eine hierarchische Tabelle wie tb_Tree rekursiv zu durchlaufen, führen Sie die folgenden Schritte aus:
Dieser rekursive Prozess wird fortgesetzt, bis alle Blattknoten identifiziert sind.
Tiefenbasierter Ansatz
Wenn Sie die maximale Tiefe des Baums kennen, können Sie die Tabelle wiederholt mit sich selbst verbinden, um die tiefste Ebene zu erreichen, und dann alle verbleibenden NULL-Werte herausfiltern Werte.
Verschachtelte Mengendarstellung
Alternativ können Sie die Tabellenstruktur ändern, um eine verschachtelte Mengendarstellung zu verwenden. Dazu gehört das Hinzufügen zusätzlicher Spalten, um die linken und rechten Grenzen jedes Knotens in der Hierarchie darzustellen.
Beispielabfrage zum Abrufen von untergeordneten Knoten
Um alle untergeordneten Knoten eines bestimmten Knotens abzurufen mit Id gleich X würden Sie die folgende Abfrage verwenden:
SELECT * FROM tb_Tree WHERE ParentId IN ( SELECT Id FROM tb_Tree WHERE ParentId = X UNION ALL /* Recursive traversal of children */ SELECT Id FROM tb_Tree WHERE Id IN ( SELECT Id FROM tb_Tree WHERE ParentId = X ) );
Diese Abfrage durchläuft rekursiv die Hierarchie, sammelt alle ID-Werte, die mit untergeordneten Knoten verknüpft sind.
Das obige ist der detaillierte Inhalt vonWie frage ich hierarchische Daten in MySQL ab, ohne CONNECT BY PRIOR?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!