Verwenden von MySQL-Abfragen zum Durchlaufen von Zeilen, um einen rekursiven Baum zu erstellen
Ich habe eine Stücklistentabelle, die so aufgebaut ist:
item - Elternteil
Das Endergebnis beim Anzeigen der Stückliste ist, dass sie folgendermaßen angezeigt wird:
item 1 - parent 0
item 2 - parent 1
item 3 - parent 1
Das Endergebnis könnte auch mehrstufig sein:
item 3 - parent 0
item 4 - parent 3
item 76 - parent 3
Und es kann unendlich weitergehen:
item 76 - parent 0
item 46 - parent 76
item 46 - parent 0
item 25 - parent 46
Im Moment erhalte ich entweder nur eine Ebene aus der Datenbank:
SELECT * FROM bom WHERE parentId = $itemId (shorthand)
Oder ziehen Sie jede Zeile aus der Tabelle und verwenden Sie meine rekursive Funktion, um nur die zu sortieren, die ich benötige. Dies ist jedoch offensichtlich ineffizient, da ich möglicherweise nur 10 Zeilen benötige, aber 10.000 Datensätze ziehe. Die Ausgabe der rekursiven Funktion erstellt einfach einen Baum wie diesen:
item 1
item 2
item 3
item 4
item 76
item 46
item 25
Ich weiß nur, dass ich bei Punkt 1 anfange. Punkt 5 könnte einen Elternteil von 11 haben; Sie müssen nicht fortlaufend sein. Ich möchte alle Kinderzweige im Baum haben. Wie könnte ich diese Abfrage in MySQL tun?