Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Najłatwiejszy sposób na zbudowanie drzewa z listy Przodków

Pierwszym kluczem jest sortowanie wyników SQL według liczby przodków. Zrobiłem to w PHP, ponieważ unikam złożoności liczb wielocyfrowych.

Zapewnia to listę węzłów w kolejności, w jakiej można je poprawnie wstawić.

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
        )

)

W tym momencie nie obchodzą mnie klucze, tylko listy przodków. Ścieżkę przez drzewo można znaleźć między przecięciem dostępnych węzłów a pozostałymi przodkami.

  function add_node($ancestors, &$tree) {
    if (count($ancestors) == 1) {
      $tree[array_pop($ancestors)] = array();
      return;
    }   
    $next_node = array_intersect($ancestors, array_keys($tree));
    $this->add_node(
        array_diff($ancestors, $next_node) , 
        $tree[array_pop($next_node)]
        );  
  }


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. zapętl zapytanie mysql

  2. MySQL:sprzężenie wewnętrzne vs. Gdzie

  3. Uzyskaj dane między dwiema datami w MySQL

  4. Mysql varchar unikalna kolumna varchar(255) vs. varchar(50)

  5. PHP mówi, że nie wybrano bazy danych, nawet po użyciu mysqli_select_db()