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

親子関係のあるDBテーブルを多次元配列に変換する方法

    これが私の解決策です:

    function cost_centres_format($items,$parent_id,$array=array()) {
        foreach($items as $item) {
            if($item->parent_id == $parent_id) {
                $array[] = $item;
                if($item->internal_purchase_order_cost_centre_id>0) {
                    $array = cost_centres_format($items,$item->internal_purchase_order_cost_centre_id,$array);
                }
            }
        }
        return $array;
    }
    $array = cost_centres_format($items,0);
    

    ディーゼル(id:5)は、元の注文のため、車両メンテナンス(id:4)よりも低くなります。名前で追加の並べ替えを行うこともできますが、この例では、Capital(id:3)はOverheads(id:2)の下にありました。



    1. 上位10レコードを選択するSQL

    2. 初期化されていないコレクションPL/SQLへの参照

    3. BIGINTUNSIGNEDVALUEが範囲外ですMySQL

    4. 結果が1つしかないことがわかっている場合、MySQLクエリに「LIMIT1」を追加すると、クエリが高速になりますか?