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
supondo que sua tabela seja chamada de T. não testada. não tenho certeza do que acontece se d não tiver três pais, provavelmente você não entende nada, pode tentar LEFT JOIN para esses casos para obter valores NULL para os ótimos pais. Além disso, o último JOIN não é realmente necessário porque você pode simplesmente selecionar b.parent_id em vez de a.id, mas, você sabe, apenas para levar para casa o padrão;)