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

単一のクエリで再帰的なカテゴリ?

    ツリーが大きすぎない場合は、いくつかの巧妙な参照を使用してPHPでツリーを構築するだけです。

    $nodeList = array();
    $tree     = array();
    
    $query = mysql_query("SELECT category_id, name, parent FROM categories ORDER BY parent");
    while($row = mysql_fetch_assoc($query)){
        $nodeList[$row['category_id']] = array_merge($row, array('children' => array()));
    }
    mysql_free_result($query);
    
    foreach ($nodeList as $nodeId => &$node) {
        if (!$node['parent'] || !array_key_exists($node['parent'], $nodeList)) {
            $tree[] = &$node;
        } else {
            $nodeList[$node['parent']]['children'][] = &$node;
        }
    }
    unset($node);
    unset($nodeList);
    

    これにより、$treeのツリー構造が得られます。 それぞれのchildrenの子供たちと -スロット。

    これはかなり大きなツリー(>> 1000アイテム)で行いました。これは非常に安定しており、MySQLで再帰クエリを実行するよりもはるかに高速です。



    1. pgAdmin 3を使用してCSVからPostgresテーブルにデータをインポートするにはどうすればよいですか?

    2. PostgreSQLはテキストに部分文字列が出現する回数をカウントします

    3. SQLServer2014の探索SELECTINTOParallelism

    4. MariaDBを使用したLDAP認証とグループマッピングの構成