PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment préserver l'ordre des enfants à apparaître après leurs parents

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)