Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to INNER JOIN 3 tables using CodeIgniter

Can someone Tell me how to join 3 table with php? Example

SELECT FROM table1, table2,table on INNERJOIN -------------------

let I have 3 table.(question table ,answer table and category table) Here is example form my webpage.

Time remaining 30 minutes(I will get "30 minutes" form Category table)
1. Question (from question table)
2. answer (from answer table)

I don't know how to join 3 table.

like image 270
Wai Yan Avatar asked Sep 16 '11 05:09

Wai Yan


3 Answers

it should be like that,

$this->db->select('*');    
$this->db->from('table1');
$this->db->join('table2', 'table1.id = table2.id');
$this->db->join('table3', 'table1.id = table3.id');
$query = $this->db->get();

as per CodeIgniters active record framework

like image 92
Ket. Avatar answered Sep 23 '22 17:09

Ket.


I believe that using CodeIgniters active record framework that you would just use two join statements one after the other.
eg:

$this->db->select('*');
$this->db->from('table1');
$this->db->join('table1', 'table1.id = table2.id');
$this->db->join('table1', 'table1.id = table3.id');
$query = $this->db->get();

Give that a try and see how it goes.

like image 43
Klee Avatar answered Sep 21 '22 17:09

Klee


I created a function to get an array with the values ​​for the fields and to join. This goes in the model:

  public function GetDataWhereExtenseJoin($table,$fields,$data) {
    //pega os campos passados para o select
    foreach($fields as $coll => $value){
        $this->db->select($value);
    }
    //pega a tabela
    $this->db->from($table);
    //pega os campos do join
    foreach($data as $coll => $value){
        $this->db->join($coll, $value);
    }
    //obtem os valores
    $query = $this->db->get();
    //retorna o resultado
    return $query->result();

}

This goes in the controller:

$data_field = array(
        'NameProduct' => 'product.IdProduct',
        'IdProduct' => 'product.NameProduct',
        'NameCategory' => 'category.NameCategory',
        'IdCategory' => 'category.IdCategory'
        );
    $data_join = array
                    ( 'product' => 'product_category.IdProduct = product.IdProduct',
                      'category' => 'product_category.IdCategory = category.IdCategory',
                      'product' => 'product_category.IdProduct = product.IdProduct'
                    );
    $product_category = $this->mmain->GetDataWhereExtenseJoin('product_category', $data_field, $data_join);

result:

echo '<pre>';
    print_r($product_category);
    die;
like image 35
Fabio Souza Avatar answered Sep 21 '22 17:09

Fabio Souza