sql >> データベース >  >> RDS >> Mysql

より効率的な階層システム

    私はこれらの線に沿って何かがすべきだと思います(テストされていない、あなたのニーズに適応しなければなりません):

    $q = mysql_query("SELECT id, parent_id, name FROM categories");
    while ($r = mysql_fetch_row($q)) {
      $names[$r[0]] = $r[2];
      $children[$r[0]][] = $r[1];
    }
    
    function render_select($root=0, $level=-1) {
      global $names, $children;
      if ($root != 0)
        echo '<option>' . strrep(' ', $level) . $names[$root] . '</option>';
      foreach ($children[$root] as $child)
        render_select($child, $level+1);
    }
    
    echo '<select>';
    render_select();
    echo '</select>';
    

    これを行うさらに面白い方法は、SQLストアドプロシージャを使用することですが、この場合はやり過ぎかもしれません...



    1. Postgresのすべてのテーブルの行数をどのように見つけますか

    2. 大文字と小文字を区別するRLIKE

    3. Oracleは短絡評価を使用していますか?

    4. FPDFで作成されたPDFとPDFを保存および取得する方法