2011-09-16 17 views
8

¿Puede alguien decirme cómo unirme a 3 table with php? Ejemplo Cómo INNER UNIRSE a 3 tablas usando CodeIgniter

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

Let tengo 3 mesa. (Tabla de preguntas, mesa de respuesta y tabla de categorías) Aquí es formar ejemplo mi página web.

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

No sé cómo unir 3 mesas.

+1

Cómo haces esto? ¿Con una instrucción SQL codificada de forma rígida ?, ¿con un marco como ActiveRecord? ¿o algo mas? – Klee

+0

Estoy usando Codeigniter. –

Respuesta

27

debería ser así,

$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(); 

según CodeIgniters activa marco registro

3

Creo que al utilizar el marco de registro activo de CodeIgniters, solo usaría dos instrucciones de unión una después de la otra.
por ejemplo:

$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(); 

Inténtelo y vea cómo va.

+0

Gracias Klee, ¿Puede decirme si no codeignador? ¿Cómo unir tres tablas con el comando Sql? Lo siento por mi mal uso del inglés. Por favor paciente conmigo. –

1

Para ejecutar sentencias SQL puras (No sé sobre el MARCO- CodeIGNITER !!!) puede utilizar SUB QUERY! La sintaxis sería como sigue

SELECT t1.id del ejemplo T1 INNER JOIN (SELECT ID a partir de (example2 t1 unen example3 t2 en t1. id = t2. id)) como t2 EN t1.id = t2 .carné de identidad;

Espero que consigas mi punto!

+0

Gracias Tirth Bodawala –

2

Creo que en CodeIgniter el mejor para usar ActiveRecord como escribió anteriormente. Una cosa más: se puede usar en el método de encadenamiento AR:

$this->db->select('*')->from('table1')->join('table2','table1.id=table2.id')->... 
2

he creado una función para obtener una matriz con los valores de los campos y para unirse. Esto va en el modelo:

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(); 

} 

Esto va en el controlador:

$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); 

resultado:

echo '<pre>'; 
    print_r($product_category); 
    die; 
0
function fetch_comments($ticket_id){ 
    $this->db->select('tbl_tickets_replies.comments, 
      tbl_users.username,tbl_roles.role_name'); 
    $this->db->where('tbl_tickets_replies.ticket_id',$ticket_id); 
    $this->db->join('tbl_users','tbl_users.id = tbl_tickets_replies.user_id'); 
    $this->db->join('tbl_roles','tbl_roles.role_id=tbl_tickets_replies.role_id'); 
    return $this->db->get('tbl_tickets_replies'); 
} 
0
$this->db->select('*');  
$this->db->from('table1'); 
$this->db->join('table2', 'table1.id = table2.id', 'inner'); 
$this->db->join('table3', 'table1.id = table3.id', 'inner'); 
$this->db->where("table1", $id); 
$query = $this->db->get(); 

donde se puede SPE cifique qué id debe verse o seleccione en una tabla específica. También puede seleccionar la parte de unión izquierda, derecha, exterior, interior, izquierda externa y derecha externa en el tercer parámetro del método de unión.

1

puede Modiv su codificación como esto

$this->db->select('a.nik,b.nama,a.inv,c.cekin,c.cekout,a.tunai,a.nontunai,a.id'); 
$this->db->select('DATEDIFF (c.cekout, c.cekin) as lama'); 
$this->db->select('(DATEDIFF (c.cekout, c.cekin)*c.total) as tagihan'); 
$this->db->from('bayar as a'); 
$this->db->join('pelanggan as b', 'a.nik = b.nik'); 
$this->db->join('pesankamar_h as c', 'a.inv = c.id'); 
$this->db->where('a.user_id',$id); 
$query = $this->db->get(); 
return $query->result(); 

espero que puede ser resolver su SQL

Cuestiones relacionadas