Heim > Datenbank > MySQL-Tutorial > Wie frage ich hierarchische Daten in MySQL ab, ohne CONNECT BY PRIOR?

Wie frage ich hierarchische Daten in MySQL ab, ohne CONNECT BY PRIOR?

Patricia Arquette
Freigeben: 2025-01-06 13:09:42
Original
995 Leute haben es durchsucht

How to Query Hierarchical Data in MySQL Without CONNECT BY PRIOR?

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:

  1. Wählen Sie Zeilen aus, in denen ParentId mit dem gewünschten Stammknoten übereinstimmt.
  2. Erfassen Sie die ID-Werte der ausgewählten Zeilen.
  3. Wiederholen Sie die Schritte 1 und 2 für jede ID in der gesammelten Liste.

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

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!

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