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
supponendo che il tuo tavolo si chiami T. non testato però. non sono sicuro di cosa succede se d non ha tre genitori, probabilmente non ottieni nulla, potresti provare LEFT JOIN per quei casi per ottenere valori NULL per i grandi genitori. Inoltre, l'ultimo JOIN non è davvero necessario perché potresti semplicemente selezionare b.parent_id invece di a.id ma, sai, solo per portare a casa il pattern;)