Como unir 3 'tres' tablas de mi base de datos en Codeigniter

Codeigniter es un framework PHP que nos facilita muchas cosas, coomo por ejemplo el Active Record.
Para  unir 3 'tres' tablas en codeigniter con Active Record es mucho mas fácil que hacer una consulta directamente en la consola de nuestro sistema gestor de bases de datos, Vean.

Supongamos que tenemos estas tres tablas
  1. A = id_a, name_a,...  
  2. B = id_b, name_b, etc  
  3. C = id_c, A_Id_a, B_Id_b  

Para hacer la consulta en Active record seria lo siguiente:  
  1. $this->db->select('*');  
  2. $this->db->from('A');  
  3. $this->db->join(' C',  'A.id_a = C.A.Id_a', 'INNER');  
  4. $this->db->join('B''B.id_b = C.Id_b', 'INNER');  
  5. $result = $this->db->get();

Al ejecutarse generara esto

  1. SELECT *  
  2. FROM  A  
  3.     INNER JOINC  
  4.     ON C.A_Id_a = A.id_a  
  5.     INNER JOIN B  
  6.     ON B.id_b = C.id_b  

Tambien te gustaria esto

17 comentarios

  1. hola, disculpa y si quiero realizar na consulta de 3 tablas y que esos resultados en comun entre ellas me aparezca en un grid o una tabla, como le hago?

    ResponderBorrar
  2. Por favor, Explica mejor tu pregunta para poder ayudarte :)

    ResponderBorrar
  3. tengo una vista donde hay 3 select , por ejemplo uno donde me selecciona el articulo, otro el almacen yel tercero el material, son tablas distintas pero relacionadas, como le hago para que me realice filtros de la seleccion, es decir que cuand le de en un almacen me parezca en un grid todos os rticulos exixtentes ahi, y si selecciono el material mi consulta en el grid solo sea de los articulosque hay en ese almacn y con ese material?me explique?

    ResponderBorrar
  4. Creo que con active record no puedes hacer este tipo de consultas complejas, pero si te recomiendo que crees la consulta estándar y la ejecutes así

    $query = $this->db->query('SELECT nombre FROM mi_tabla LIMIT 1');
    $row = $query->row_array();

    donde (SELECT nombre FROM mi_tabla LIMIT 1) va a ser tu consulta estandar

    ResponderBorrar
  5. ah ok gracias lo checare bien , disculpa otra pregunta para importar un archivo de excel y poder visualizarlo en mi formulario como le hago, ya vi muchos ejemplo pero en realidad no se que poner en el controlador, vista y modelo

    ResponderBorrar
  6. Los datos de excel debes pasarlo a tu base de datos, PHPExcel es una muy buena libreria que podemos integrar a codeigniter y nos facilita esta tarea, te dejo unos link, espero que te sirvan.

    https://github.com/EllisLab/CodeIgniter/wiki/PHPExcel

    http://myblog.dsonic.webfactional.com/using-phpexcel-with-codeigniter/

    http://softpei.blogspot.com/2013/07/importando-y-exportando-excel-sobre.html

    ResponderBorrar
  7. wow gracias te agradezco tu ayuda, los checo y los implemento en mi proyecto gracias los link realmente tienen informacion muy buena

    ResponderBorrar
  8. Ok de nada, Siempre para ayudarte :)

    ResponderBorrar
  9. si tuvieras 3 tablas usuario(idusuario,idrol,usuario,password,estado),rol(idrol,rol),persona(idpersona,nombres,email,celular)
    public function get_usuario()
    {
    $sql=$this->db
    ->select('u.idusuario,u.idrol,r.rol,p.idpersona,p.nombres,u.usuario,u.password,u.estado')
    ->from('usuario as u')
    ->join('persona as p','u.idpersona=p.idpersona','INNER')
    ->join('rol as r','u.idrol=r.idrol','INNER')
    ->order_by('idusuario','desc')
    ->get();
    //echo $this->db->last_query();
    return $sql->result();
    }

    ResponderBorrar
  10. Como uno varias tablas en el controlador si es una consulta para devolver un solo resultado, creo que es en un arreglo pero nose como

    ResponderBorrar
  11. Como puedi unir varias tablas en el controlador, de la consulta que realize para para obtener un solo resultado, creo que es en un arreglo pero nose como

    ResponderBorrar
    Respuestas
    1. Eso lo haces en el Modelo y con el código de arriba puedes unir las tablas, para obtener el resultado deseado debes poner la condición en el select
      " $this->db->select('condicion'); "

      Borrar
  12. SELECT cliente.Nombre_Cliente,cuentas.num_cuenta,cuentas.Saldo,transacciones.id_trans,transacciones.Deposito,transacciones.Retiro,transacciones.Saldo_actual,transacciones.Fecha_trans,transacciones.Monto,transacciones.Hora FROM cliente,cuentas,transacciones
    quiero una consulta php con join de tres tablas y me manda error alguien que pueda ayudar xfas

    ResponderBorrar
    Respuestas
    1. Estas usando algún tipo de Framework ?

      Aquí te dejo una buena documentación sobre join http://dev.mysql.com/doc/refman/5.0/es/join.html

      Borrar
  13. Muy interesante, yo estoy justamente haciendo join de 3 y hasta de 4 tablas, solo que no tenia la idea de como hacerlo, podrías por favor poner el ejemplo completo con la vista, el modelo y el controlador, soy nuevo en esto, gracias.

    ResponderBorrar
  14. Hola una consulta soy novata con todo esto pero como hago para realizar un insert a tres tablas relacionadas por una clave foreanea, logré hacer la consulta pero no me sale insertar los registros a las 3 tablas...me podrias ayudar?

    ResponderBorrar
  15. Y como prodria unir tres tablas de bases de datos diferentes en codeigniter.

    ResponderBorrar