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

ネストされたmysqlクエリをcodeigniterスタイルに変換します

    codeigniterのサブクエリ方式を使用してこれを行うことができます。この目的のために、codeigniterをハックする必要があります。このようにsystem/database/DB_active_rec.phpに移動しますこれらの関数からpublicまたはprotectedキーワードを削除します

    public function _compile_select($select_override = FALSE)
    public function _reset_select()
    

    これでサブクエリの書き込みが可能になりましたそしてこれがアクティブレコードを使用したクエリです

    $data   =   array(
                    'COUNT(B.event) AS  Calls',
                    'B.ID'
                );
    
    $this->db
            ->select($data)
            ->from('TableB AS B')
            ->like('B.event','call','both')
            ->where('`Time` >=',1360540800)
            ->where('`Time` <=',1361232000)
            ->group_by('B.ID');
    
    $subQuery = $this->db->_compile_select();
    $this->db->_reset_select();
    unset($data);
    $data   =   array(
                    'A.ID',
                    'A.fName',
                    'A.lName',
                    'COALESCE (B.calls, 0) AS Calls'
                );
    $this->db
            ->select($data)
            ->from('TableA AS A')
            ->join("$subquery")
            ->like('A.State','SENT','both')
            ->or_like('A.State','SET','both');
    

    私はあなたの要件に応じてあなたができるように両方を入れました。注:サブクエリを使用している間はあなたが使用しなければなりません

    $this->db->from('myTable')
    

    代わりに

    $this->db->get('myTable')
    

    クエリを実行します。




    1. レール内の列タイプをより長い文字列に変更する

    2. SQLiteAssetHelperを使用して暗号化されたDBからデータを読み取るにはどうすればよいですか?

    3. データベース挿入のパフォーマンス

    4. OracleParameter.ValueをInt32に変換します