2017-12-14 1 views
-1

ich eine MySQL-Tabelle ihre Beziehung präsentiert mit 2-Feld habe, wie die folgende Tabelle +-------+-----------+---------+ | id | parent_id | name | +-------+-----------+---------+ | 1 | NULL | A | +-------+-----------+---------+ | 2 | 1 | B | +-------+-----------+---------+ | 3 | 2 | C | +-------+-----------+---------+ , wenn ich Namen aus der Tabelle auswählen, in dem id = 1, es mir das Ergebnis sagen wird, ist A, weil die parent_id von A ist NULL;Gibt es eine Schleife in msyql

, wenn ich Namen aus der Tabelle auswählen, in dem id = 3, wird es mir endlich sagen Ergebnis ist ein, weil B die Eltern von C und A ist die Mutter von B.

In PHP können wir es mehrfach suchen bis die parent_id NULL ist. Aber gibt es eine schnelle innere Schleife SQL-Abfrage, um dieses Problem zu lösen?

+0

Was Sie wollen, ist https : //dev.mysql.com/doc/refman/8.0/en/with.html#common-table-expressions-recursive-examples, aber es ist erst ab MySQL 8.0 verfügbar. –

+0

Ich denke, Sie suchen nach Mysql Rekursion. –

Antwort

0

Die kurze Antwort ist nein - Sie können nicht einfache SQL-Schleife. Sie können eine gespeicherte Prozedur in MySQL schreiben, um die Schleife lokal auf dem SQL-Server auszuführen, um mehrere Umläufe zu PHP zu vermeiden. Hier ist die Dokumentation, die gespeicherte Prozeduren auf MySQL beschreibt:

https://dev.mysql.com/doc/refman/5.7/en/create-procedure.html

Für Schleifen Sie werden auch am wahrscheinlichsten einen Cursor benötigen, die hier beschrieben wird:

https://dev.mysql.com/doc/refman/5.7/en/cursors.html

Verwandte Themen