Vous avez vraiment deux tris en un sur votre dernière requête. Les parents peuvent trier par ordre croissant ou décroissant, mais les enfants ne peuvent trier que par ordre croissant.
Après avoir examiné cela, je pense que vous pouvez obtenir une solution avec quelque chose comme ça.
order by case
when depth = 0
then path
/*
secret function that always returns the
right numbers regardless of whether or not the sort is ascending.
*/
else XXX_function('DESC', path)
end desc;
Je crois que la logique est bonne, mais vous devez trouver comment remplacer les nombres sur les tris décroissants car les choses seront «à l'envers». (Peut-être inverser les positions du tableau)