Mysql
 sql >> база данни >  >> RDS >> Mysql

Най-лесният начин да построите дърво от списък с предци

Първият ключ е да сортирате SQL резултатите по броя на предците. Направих това в PHP, тъй като избягвам сложността на многоцифрените числа.

Това предоставя списък с възли в ред, в който те могат да бъдат валидно вмъкнати.

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
        )

)

В този момент не ме интересуват ключовете, а само списъците с предците. Пътят през дървото може да бъде намерен между пресечната точка на наличните възли и останалите предци.

  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. CakePHP вмъкване на две заявки за избор

  2. SQL заявка за създаване на база данни в MySQL

  3. TEXT поле, което е съвместимо в mysql и hsqldb

  4. MySQL базирано уеб приложение:Най-лесният начин за потребителите да избират поръчка или артикули?

  5. Защо редовете, връщани чрез обяснение, не са равни на count()?