Ve vašem posledním dotazu máte skutečně dva druhy v jednom. Rodiče mohou řadit vzestupně nebo sestupně, ale děti mohou řadit pouze vzestupně.
Když jsem se na to podíval, věřím, že s něčím takovým můžete získat řešení.
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;
Věřím, že logika je správná, ale musíte přijít na to, jak nahradit čísla na sestupných třídách, protože věci budou „vzhůru nohama“. (Možná obrátit pozice pole)