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

codeignitermysql左結合インクルード選択

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

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

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

    $select =   array('DISTINCT c2_id','f_id','f_name');
    $this->db->select($select);
    $this->db->from('file');
    $this->db->order_by('f_id','DESC');
    $subQuery1 = $this->db->_compile_select();
    
    unset($select);
    
    $this->db->_reset_select();
    
    $select =   array('DISTINCT c2_id','f_id','f2_name');
    $this->db->select($select);
    $this->db->from('file2');
    $this->db->order_by('f2_id','DESC');
    $subQuery2 = $this->db->_compile_select();
    
    unset($select); 
    
    $this->db->_reset_select();
    
    // And now your main query
    
    $select =   array(
                      'c1.c1_id',
                      'c1.c1_name',
                      'c2.c2_id',
                      'c2.c2_name',
                      'c2.c2_type',
                      'c2.c2_status',
                      'f.f_id',
                      'f.f_name',
                      'f2.f2_id',
                      'f2.f2_name'
                );
    
    $this->db->select($select);
    $this->db->from('category2 c2');
    $this->db->join("($subQuery1)",'f.c2_id = c2.c2_id','left');
    $this->db->join("($subQuery2)",'f2.c2_id = c2.c2_id','left');
    $this->db->where('c2.c2_status',1);
    $this->db->group_by('c2.c2_id');
    $main_query = $this->db->get();
    

    そして、物事は行われます。乾杯!!!注:サブクエリを使用するときは、使用する必要があります

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

    代わりに

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

    クエリを実行します。

    これで、次のように作成されたクエリを確認できます

    echo $this->db->last_query();
    


    1. BigqueryでSelectを使用して行データから列を動的に作成する

    2. OracleでTO_CHAR()を使用して10進数を16進数に変換する方法

    3. スウェーデン語の文字をmysqlデータベースに保存する

    4. LinqtoOracleを使用する方法はありますか