Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment puis-je obtenir des identifiants d'ancêtre pour une profondeur de récursivité arbitraire dans une requête SQL ?

SELECT c.id, b.id, a.id 
FROM T 
INNER JOIN T AS c on T.parent_id=c.id 
INNER JOIN T AS b ON c.parent_id = b.id 
INNER JOIN T as a ON b.parent_id = a.id

en supposant que votre table s'appelle T. non testé cependant. vous ne savez pas ce qui se passe si d n'a pas trois parents, vous n'obtenez probablement rien, essayez LEFT JOIN pour ces cas afin d'obtenir des valeurs NULL pour les grands parents. De plus, le dernier JOIN n'est pas vraiment nécessaire car vous pouvez simplement sélectionner b.parent_id au lieu de a.id mais, vous savez, juste pour ramener le modèle à la maison ;)