Lassen Sie uns sagen, dass ich eine Tabelle namens my_table haben, die wie folgt aussieht:Wie kann ich alle untergeordneten Elemente aus einer übergeordneten Zeile in derselben Tabelle abrufen?
id | name | parent_id
1 | Row 1 | NULL
2 | Row 2 | NULL
3 | Row 3 | 1
4 | Row 4 | 1
5 | Row 5 | NULL
6 | Row 6 | NULL
7 | Row 7 | 8
8 | Row 8 | NULL
9 | Row 9 | 4
10 | Row 10 | 4
Grundsätzlich möchte ich meine letzte Array in PHP sehen wie folgt aus:
Array
(
[0] => Array
(
[name] => Row 1
[children] => Array
(
[0] => Array
(
[name] => Row 3
[children] =>
)
[1] => Array
(
[name] => Row 4
[children] => Array
(
[0] => Array
(
[name] => Row 9
[children] =>
)
[1] => Array
(
[name] => Row 10
[children] =>
)
)
)
)
)
[1] => Array
(
[name] => Row 2
[children] =>
)
[2] => Array
(
[name] => Row 5
[children] =>
)
[3] => Array
(
[name] => Row 6
[children] =>
)
[4] => Array
(
[name] => Row 8
[children] => Array
(
[0] => Array
(
[name] => Row 7
[children] =>
)
)
)
)
Also, ich will alles bekommen der Zeilen, in denen parent_id den Wert null hat, suchen Sie anschließend alle verschachtelten untergeordneten Elemente rekursiv.
Jetzt ist hier der Teil, den ich Mühe, mich mit:
Wie kann dies mit 1 Aufruf der Datenbank durchgeführt werden?
Ich bin sicher, dass ich es mit einer einfachen Select-Anweisung tun könnte und dann PHP das Array so aussehen lassen, aber ich hoffe, dass dies mit einer Art von db Beitritt oder etwas ähnliches getan werden kann.
rekursive Abfragen auf Oracle und aktuelle PostgreSQl sind als gut, aber nicht MySQL. – regilero