web-dev-qa-db-fra.com

MySQL Recursive récupère tous les enfants du parent

j'ai ce cas en utilisant la requête récursive sur Mysql pour trouver lv 2 et lv3 enfant sur une table ...
structure de base de données que j'utilise: 

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

Le résultat que j'attendais, lors du filtrage des données, où id = 1, le résultat attendu est celui-ci.

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

ou c'est l'illustration .  Illustration

j'ai cherché partout et lu ceci http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/ , mais je n'ai pas trouvé le résultat que je cherchais ..
toute aide serait appréciée Merci

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

si vous voulez obtenir tous les enfants de niveau d'un parent particulier, alors vous devriez essayer cette

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

Essayez ceci, beaucoup plus vite

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