从 mysql 中的自引用 table 获取 parent 和 grandparent

Get parent and grandparent from self referencing table in mysql

我有一个 offices table 自引用

id   name  parent_id
---------------------
1     A       0
2     B       1
3     C       2
4     D       3

预期输出:

child       - grandparent
parent      - grandparent
grandparent - grandparent

更多可视化

id    name    expected_name
---------------------------
4      D         B
3      C         B
2      B         B

我的代码:

SELECT child.id,child.name,grand.name
FROM offices AS child
JOIN offices AS parent ON child.parent_office_id = parent.id
JOIN offices AS grand  ON grand.id = parent.parent_office_id
WHERE child.id=4

它只是给我 child-grandparent result.I 需要其他两个关系 too.How 我可以实现吗?

WITH cte AS ( SELECT child.id  cid, child.name  cname, 
                     parent.id pid, parent.name pname, 
                     grand.id  gid, grand.name  gname
              FROM offices AS child
              JOIN offices AS parent ON child.parent_id = parent.id
              JOIN offices AS grand  ON parent.parent_id = grand.id 
              WHERE child.id = 4 )
SELECT cid id, cname name, gname expected_name FROM cte
UNION ALL
SELECT pid, pname, gname FROM cte
UNION ALL
SELECT gid, gname, gname FROM cte

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=77a59b2f6b8604e042754f6986b9a24b