Vous avez besoin d'une jointure récursive que mysql ne prend pas en charge. La seule chose que vous pouvez faire est de déterminer le niveau maximum de profondeur (dans votre cas, c'est 1 puisque vous avez p->c) et avec cela, vous pouvez déterminer le nombre de jointures nécessaires :
niveau de profondeur maximal =nombre d'auto-jointures :
SELECT
p.id as parent_id,
p.name as parent_id,
c1.id as child_id,
c1.name as child_name
FROM
my_table p
LEFT JOIN my_table c1
ON c1.parent = p.id
WHERE
p.parent=0
Par exemple, si votre niveau de profondeur maximum était de 3, vous auriez besoin de 3 auto-jointures :
SELECT
p.id as parent_id,
p.name as parent_id,
c1.id as child_id_1,
c1.name as child_name_1,
c2.id as child_id_2,
c2.name as child_name_2,
c3.id as child_id_3,
c3.name as child_name_3
FROM
my_table p
LEFT JOIN my_table c1
ON c1.parent = p.id
LEFT JOIN my_table c2
ON c2.parent = c1.id
LEFT JOIN my_table c3
ON c3.parent = c2.id
WHERE
p.parent=0