it-swarm.com.de

MySQL Recursive holt alle Kinder von Eltern

ich habe diesen Fall mit rekursiver Abfrage auf MySQL, um Lv 2 und Lv3 Kind in einer Tabelle zu finden ...
Datenbankstruktur verwende ich: 

id name parent
1    A    0
2    B    0
3    C    0
4    D    1
5    E    1
6    F    2
7    G    2
8    H    3
9    I    3
10   J    4
11   K    4

Das Ergebnis, das ich erwartet hatte, wenn die Daten gefiltert werden, wird bei id = 1 das Ergebnis generiert, das ich erwarte.

id name parent
4   D     1
5   E     1
10  J     4
11  K     4

oder das ist die Illustration .  Illustration

ich habe überall gesucht und diese gelesen http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/ , aber ich habe das gewünschte Ergebnis nicht gefunden ..
jede Hilfe wäre dankbar, danke

6
Bakti Wijaya
SELECT *
FROM TABLENAME
WHERE PARENT = 1
UNION
SELECT * 
FROM TABLENAME
WHERE PARENT IN 
    (SELECT ID FROM TABLENAME WHERE PARENT = 1)
1
Ollaw

wenn Sie alle untergeordneten Klassen eines bestimmten Elternteils erhalten möchten, sollten Sie dies versuchen

select  id,
        name,
        parent
from    (select * from tablename
         order by parent, id) tablename,
        (select @pv := '1') initialisation
where   find_in_set(parent, @pv) > 0
and     @pv := concat(@pv, ',', id)
11
Manoj Rana

Versuchen Sie es, viel schneller

SELECT * FROM table AS T1 INNER JOIN (SELECT id FROM table WHERE parent = 1) AS T2 ON T2.id = T1.parent OR T1.parent = 1 GROUP BY T1.id
1
pradeep