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. MySQL:日付範囲の間に欠落している日付を見つける

    2. SQLiteサブクエリ

    3. SQL Server Ro14でデッドロックの理由を見つける方法は?

    4. SQLServerでフォルダー内のファイルを一覧表示する方法