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
Angenommen, Ihre Tabelle heißt T. ungetestet. Ich bin mir nicht sicher, was passiert, wenn d keine drei Eltern hat, wahrscheinlich bekommen Sie nichts, versuchen Sie es mit LEFT JOIN für diese Fälle, um NULL-Werte für die großen Eltern zu erhalten. Außerdem ist der letzte JOIN nicht wirklich notwendig, weil Sie einfach b.parent_id anstelle von a.id auswählen könnten, aber, wissen Sie, nur um das Muster nach Hause zu fahren;)