2012-08-06 17 views
5

entonces tengo dos tablas, y quiero obtener todas las filas de la tabla 1 que cumplan las condiciones de la cláusula where, y luego unirlas con la tabla dos basada en la unión condicionesen codeigniter como hago una unión con una cláusula where

aquí son las tablas de ejemplo:

table1: 

col1 col2 col3 
1  a  val1 
2  b  val2 
3  c  val3 

table2: 

col1 col3 
1  someval1 
2  someval2 
3  someval3 

ahora quiero agarrar todas las filas de la tabla 1, donde col1 = 2, y unirse a las filas con filas de tabla2 donde table2.col1 = table1.col1. ¿Tiene sentido?

+0

roytuts.com/codeigniter-join-example/ – user3470953

Respuesta

13

Ha sido un tiempo desde que escribí CI, pero según this docs page, su solución podría tener este aspecto:

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

$query = $this->db->get(); 

nota esta respuesta no debe interpretarse de ninguna manera como un endoso de trabajar con Code Igniter ;-)

+0

ya yo estaba pensando en eso también, excepto i wasnn't seguro de si la cláusula donde se aplicará la tabla 1 en lugar de la unión de la tabla 1 y la tabla 2. – user1549397

+0

Eso tiene más que ver con la forma en que su controlador de base de datos compila sus consultas; pero en casi todos los casos, la cláusula where se aplicará primero, de modo que la consulta solo realice la unión en la fila que coincida con la cláusula where. –

+1

En otras palabras, notará que puede evitar el trabajo al aplicar la cláusula where a las filas en la tabla 1 primero, y * luego * haciendo la unión. Esto es a lo que nos referimos como * construir el plan de ejecución de consultas *. En la mayoría de los casos, las cláusulas ON y WHERE se manejan de manera similar; y generalmente se hace de una manera muy eficiente. –

2

Prueba esto:

$this->db->select('*'); // Select field 
$this->db->from('table1'); // from Table1 
$this->db->join('table2','table1.col1 = table2.col1','INNER'); // Join table1 with table2 based on the foreign key 
$this->db->where('table1.col1',2); // Set Filter 
$res = $this->db->get(); 

espero que ayude :)

0
$this->db->select('book_id, book_name, author_name, category_name'); 
$this->db->from('books'); 
$this->db->join('category', 'category.category_id = books.category_id'); 
$this->db->where('category_name', 'Self Development'); 
$query = $this->db->get(); 

// Produces SQL: 
select book_id, book_name, author_name, category_name from books 
join category on category.category_id = books.category_id 
where category_name = "Self Development" 
Cuestiones relacionadas