Du har virkelig to typer i én på din sidste forespørgsel. Forældrene kan sortere stigende eller faldende, men børnene kan kun sortere stigende.
Efter at have set på dette tror jeg, at du kan få en løsning med sådan noget.
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;
Jeg tror, at logikken er sund, men du er nødt til at finde ud af, hvordan du erstatter tallene på faldende sorter, da tingene vil være 'på hovedet'. (Måske vende array-positionerne om)