Heim >Datenbank >MySQL-Tutorial >Wie können gespeicherte Prozeduren einen hierarchischen Stücklistenbaum in MySQL effizient durchlaufen?

Wie können gespeicherte Prozeduren einen hierarchischen Stücklistenbaum in MySQL effizient durchlaufen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-06 14:39:15273Durchsuche

How Can Stored Procedures Efficiently Traverse a Hierarchical BOM Tree in MySQL?

Rekursive MySQL-Abfrage für Baumdurchquerung

Problem:

Angenommen, Sie haben eine Stücklistentabelle mit Elemente und ihre übergeordneten IDs. Ziel ist es, eine hierarchische Darstellung der Elemente in Form einer Baumstruktur abzurufen. Die Verwendung einer typischen einstufigen Abfrage oder einer rekursiven Funktion kann ineffizient sein.

Lösung:

Die SQL-Sprache in MySQL unterstützt rekursive Abfragen nicht nativ. Um diese Einschränkung zu überwinden, können benutzerdefinierte gespeicherte Prozeduren (SPs) erstellt werden, um die Baumdurchquerungsfunktionalität zu erreichen.

Vorgeschlagene SPs:

Die folgenden SPs können zum Durchlaufen des Baums verwendet werden Stücklistenbaum:

  1. GetParentIDByID: Findet die übergeordnete ID eines angegebenen Elements.
  2. GetAncestry: Ruft die Ahnenlinie eines Elements bis zu einer angegebenen Ebene ab.
  3. GetFamilyTree: Erzeugt a hierarchische Darstellung des gesamten Stücklistenbaums ausgehend von einer bestimmten Wurzel Artikel.

Verwendung:

Um die SPs zu verwenden, folgen Sie diesen Schritten:

  1. Erstellen Sie die SPs in Ihrer MySQL-Datenbank unter Verwendung des bereitgestellten SQL-Codes.
  2. Rufen Sie den GetFamilyTree SP mit der Stammelement-ID als auf Parameter.
  3. Der SP gibt eine hierarchische Darstellung des Baums zurück.

Beispiel:

Zum Beispiel, wenn Sie eine Stückliste haben Tabelle mit den folgenden Daten:

+----+------+
| item | parent |
+----+------+
| 1  | 0    |
| 2  | 1    |
| 3  | 1    |
| 4  | 3    |
| 76 | 3    |
+----+------+

Der Aufruf von GetFamilyTree(1) gibt die folgende Hierarchie zurück Darstellung:

[
  {
    "item": 1,
    "children": [
      {
        "item": 2,
        "children": []
      },
      {
        "item": 3,
        "children": [
          {
            "item": 4,
            "children": []
          },
          {
            "item": 76,
            "children": []
          }
        ]
      }
    ]
  }
]

Diese Darstellung stellt alle untergeordneten Zweige im Baum bereit und ermöglicht so ein effizientes Abrufen von Elementbeziehungen.

Das obige ist der detaillierte Inhalt vonWie können gespeicherte Prozeduren einen hierarchischen Stücklistenbaum in MySQL effizient durchlaufen?. 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