sql >> Database teknologi >  >> RDS >> Mysql

Den nemmeste måde at bygge et træ på fra en liste over forfædre

Den første nøgle er at sortere SQL-resultaterne efter antallet af forfædre. Jeg gjorde dette i PHP, da jeg undgår kompleksiteten af ​​flercifrede tal.

Dette giver en liste over noder i en rækkefølge, som de gyldigt kan indsættes.

Array( [1] => Array ( [0] => 1 ) [4] => Array ( [0] => 4 [1] => 1 ) [2] => Array ( [ 0] => 2 [1] => 1 ) [3] => Array ( [0] => 3 [1] => 1 [2] => 2 ))

På dette tidspunkt er jeg ligeglad med nøglerne, kun lister over forfædre. Stien gennem træet kan findes mellem skæringspunktet mellem tilgængelige noder og de resterende forfædre.

 funktion add_node($ancestors, &$tree) { if (count($ancestors) ==1) { $tree[array_pop($ancestors)] =array(); Vend tilbage; } $next_node =array_skæringspunkt($forfædre, array_keys($træ)); $this->add_node( array_diff($ancestors, $next_node) , $tree[array_pop($next_node)] ); } 


  1. Forespørgsel for kun at hente tal fra en streng

  2. Forbinder fjernserver mysql-database til localhost

  3. Duplikere tabel i MYSQL uden at kopiere en række ad gangen

  4. Sådan finder du den optimale unikke identifikator i en tabel i SQL Server:sp_special_columns