PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como preservar a ordem dos filhos aparecerem depois dos pais


Você realmente tem dois tipos em um em sua última consulta. Os pais podem classificar em ordem crescente ou decrescente, mas os filhos só podem classificar em ordem crescente.

Depois de olhar para isso, acredito que você pode obter uma solução com algo assim.
   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;

Acredito que a lógica esteja correta, mas você precisa descobrir como substituir os números nas classificações decrescentes, pois as coisas ficarão 'de cabeça para baixo'. (Talvez inverta as posições da matriz)