Ainsi, la requête finale que j'utilise ressemble à ceci :
SELECT distinct t2.id , t2.name FROM
categories AS t1 LEFT JOIN categories as t2
ON t1.id = t2.parent
LEFT JOIN categories as t3
ON t2.id = t3.parent
WHERE t1.parent = $id OR t1.id = $id and t2.visible = 1
si un ensemble de résultats vide est renvoyé, cela signifie qu'un nœud de fin a été fourni et je renvoie simplement le $id.its fourni. J'espère qu'il continuera à le faire, car je suis un peu en train de deviner ici.