sql >> Database teknologi >  >> RDS >> PostgreSQL

Sortering af træ med en materialiseret sti?

Jeg tror, ​​at din materialiserede vej ikke er rigtig.

Hvilken logik får du for at sortere ting som dette

1
1.2
1
1.5
 

Hvorfor er den anden 1 ikke sammen med den første?

Hvis du havde

1
1.2
2
2.5
 

Dette ville være trivielt.

EDIT:Jeg har kigget på dit eksempel, og du gemmer ikke en materialiseret sti af en række, men du gemmer en materialiseret sti for den overordnede række. Her er, hvordan den materialiserede sti i rækken faktisk burde se ud. At sortere direkte på matpath ville fungere, hvis du ikke ville have mere end 9 grene, hvis du gemte det som:

id | parent_id | matpath | created ----+-----------+-----------+---------------------------- 2 | 1 | 1.2 | 2010-05-08 15:18:37.987544 6 | 2 | 1.2.6 | 2010-05-08 17:50:43.288759 8 | 6 | 1.2.6.8 | 2010-05-09 14:01:17.632695 3 | 1 | 1.3 | 2010-05-08 17:38:14.125377 4 | 1 | 1.4 | 2010-05-08 17:38:57.26743 5 | 1 | 1.5 | 2010-05-08 17:43:28.211708 9 | 5 | 1.5.9 | 2010-05-09 14:02:43.818646 7 | 1 | 1.7 | 2010-05-08 18:18:11.849735

ellers (>9) bliver du nødt til at vende matpath til noget som

001.002.006
001.002.006.008
 

der ville understøtte op til 999 filialer.

Bemærk venligst

  • selv tilgangen med 4 faste cifre, såsom 0001.0002.0006 ville give dig et felt, der er kortere end i det accepterede svar
  • du kan parse matpath en produktsorteringsværdi med en brugerfunktion
  • du kan direkte gemme matpath i dette format (det har også nogle andre gode egenskaber)


  1. CHECK-klausulen for opdaterbare visninger

  2. ADO.net SqlTransaction forbedrer ydeevnen

  3. postgreSQL - psql \i :hvordan man udfører script i en given sti

  4. Sådan minimerer du RPO for dine PostgreSQL-databaser ved hjælp af punkt-i-tidsgendannelse