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 ;)