Estoy usando Codeigniter Activa de los Registros de clase y me quieren unirse a mi users mesa con mi clients mesa, de modo que pueda mostrar a los usuarios “reales” de los nombres y no sólo su IDENTIFICACIÓN.

Aquí es lo que el clients la apariencia de la tabla (por ejemplo) y las columnas a_1, a_2, y a_3 corresponden a mi users tabla, específicamente, la user id:

  clients
|-------- | --------- | ---------- | ----------- | ----------|
|  id    |   name  |   a_1    |    a_2    |   a_3    |
|-------- | --------- | ---------- | ----------- | ----------|
|   1    |   Paul  |    2     |     4     |    1     |

Y mi users tabla se parece a esto:

   users
|-------- | --------- | ----------|
|  id    |  first  |   last   |  
|-------- | --------- | ----------|
|   1    |   Paul  |  Blake   |
|-------- | --------- | ----------|
|   2    |   Dan   |   Doe    |
|-------- | --------- | ----------|
|   3    |  Steve  |  Smith   |
|-------- | --------- | ----------|
|   4    |  Harry  |  Jones   |
|-------- | --------- | ----------|

Así que, básicamente, si yo fuera seleccione una de las clients mesa y UNIRSE a él, tendría este aspecto:

  clients
|-------- | --------- | ---------- | ----------- | ----------|
|  id    |   name  |   a_1    |    a_2    |   a_3    |
|-------- | --------- | ---------- | ----------- | ----------|
|   1    |   Paul  | Dane Doe |Harry Jones|Paul Blake|

Hasta ahora, que he probado (que no ha funcionado, sólo muestra el mismo nombre para todos):

<?
 $this->db
  ->select('name, a_1, a_2, a_3')
  ->from('clients')
  ->join('users', 'users.id=a_1 OR users.id=a_2 OR users.id=a_3');

Cualquier ayuda sería genial!

Solución:

Aquí es lo que yo era capaz de llegar con lo que funciona (gracias a @elavarasan lee):

<?
 $this->db
  ->select('CONCAT(u1.first," ", u1.last) as a_1_name, CONCAT(u2.first," ", u2.last) as a_2_name, CONCAT(u3.first," ",u3.last) as a_3_name', FALSE)
  ->from('clients')
  ->join('users AS u1', 'u1.id=a_1', 'left')
  ->join('users AS u2', 'u2.id=a_2', 'left')
  ->join('users AS u3', 'u3.id=a_3', 'left');

OriginalEl autor Dodinas | 2013-04-13

2 Comentarios

  1. 8

    @Dodinas: tengo la solución interms de Consulta de MYSQL. Me resulta difícil convertir la consulta en CI Registro Activo. Pero prueba esto:

     
    $sql = "SELECT `nombre`, CONCAT(`u1`.``,'', `u1`.`último`) como a_1, 
    CONCAT(`u2`.``,'', `u2`.`último`) como a_2, 
    CONCAT(`u3`.``,'', `u3`.`último`) como a_3 
    DE `clientes` 
    LEFT JOIN `usuarios` como `u1` (`u1`.`id`=`a_1`) 
    LEFT JOIN `usuarios` como `u2` ON (`u2`.`id`=`a_2`) 
    LEFT JOIN `usuarios` como `u3` ON (`u3`.`id`=`a_3`)"; 
    
    $resultado = $this->db- > query($sql); 
    
    

    Codeigniter Unirse con Varias Condiciones

    Aquí en mi país el tiempo es casi las 3 AM n ya estoy sentimiento muerto de sueño. Dats otro cojo razón para no convertir la Consulta en el registro Activo… 😛
    Gracias! Esto ayudó. Yo tengo que trabajar el uso de los registros Activos, véase mi edición anterior.

    OriginalEl autor Elavarasan M Lee

  2. 24

    Probar este

    $this->db
      ->select('*')
      ->from('clients')
      ->join('users', 'users.id = clients.a_1 OR users.id=clients.a_2 OR users.id = clients.a_3');
    
    $query = $this->db->get();
    
    return $query->result();

    OriginalEl autor whispersan

Dejar respuesta

Please enter your comment!
Please enter your name here