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

このMySQLテーブルの行の親IDを再帰的に取得するにはどうすればよいですか?

    これ ウェブサイトには、mysqlとPHPに階層データを格納するためのさまざまな方法の非常に優れた概要があります。あなたの質問に答える最も簡単な方法は、phpと再帰を使用することです。 modified preorder transversalなど、使用できる他の方法があります 、複数のデータベースクエリを必要としません。ただし、このメソッドは、多くの挿入と更新を処理する場合、実装がより複雑になる可能性があります。

    もう1つの本当にクールな方法であり、私の個人的なお気に入りは、フラットテーブルをツリーに解析するための最も効率的でエレガントな方法は何ですか?

    コメントに関しては、基本的に、シカゴの親を選択し、次に親の親を選択するループまたは再帰関数を作成する必要があります。

    $stack = array();
    $parent = 3;
    while($parent != 0){
        $data = (put your mysql to get the row with parentID = $parent)
        $parent = data['parentID'];
        $stack[] = $data;
    }
    
    $stack = array_reverse($stack);
    

    スタックには、シカゴの親(つまり、場所、米国)が含まれます



    1. MySQL concat()を使用して、クエリで使用する列名を作成しますか?

    2. PostgreSQLのフォールトトレランスの進化:タイムトラベル

    3. 昇順で最後の20の順序を選択します-PHP/MySQL

    4. 日付の挿入中にエラーが発生しました-日付の値が正しくありません: