una - vista anidada codeigniter
Usando la cláusula WHYS IN de Mysql en codeigniter (4)
Prueba este:
$this->db->select("*");
$this->db->where_in("(SELECT trans_id FROM myTable WHERE code = ''B'')");
$this->db->where(''code !='', ''B'');
$this->db->get(''myTable'');
Nota: $ this-> db-> select ("*"); es opcional cuando selecciona todas las columnas de la tabla
Tengo la siguiente consulta mysql. ¿Podría decirme cómo escribir la misma consulta en Codeigniter?
SELECT * FROM myTable
WHERE trans_id IN ( SELECT trans_id FROM myTable WHERE code=''B'')
AND code!=''B''
Puede utilizar la forma de consulta secundaria de codeigniter para hacer esto para este propósito, tendrá que hackear codeigniter. Me gusta esto
Vaya a system / database / DB_active_rec.php Eliminar palabras clave públicas o protegidas de estas funciones
public function _compile_select($select_override = FALSE)
public function _reset_select()
Ahora está disponible la subconsulta Y ahora aquí está su consulta con registro activo
$this->db->select(''trans_id'');
$this->db->from(''myTable'');
$this->db->where(''code'',''B'');
$subQuery = $this->db->_compile_select();
$this->db->_reset_select();
// And now your main query
$this->db->select("*");
$this->db->where_in("$subQuery");
$this->db->where(''code !='', ''B'');
$this->db->get(''myTable'');
Y la cosa está hecha. ¡¡¡Aclamaciones!!!
Nota: Al usar sub consultas debe usar
$this->db->from(''myTable'')
en lugar de
$this->db->get(''myTable'')
que ejecuta la consulta.
Mira esto tambien
¿Cómo puedo reescribir este SQL en los registros activos de CodeIgniter?
Nota: En Codeigntier 3 estas funciones ya son públicas, por lo que no es necesario que las piratee.
prueba esto:
return $this->db->query("
SELECT * FROM myTable
WHERE trans_id IN ( SELECT trans_id FROM myTable WHERE code=''B'')
AND code!=''B''
")->result_array();
No es un registro activo, pero es el modo codeigniter http://codeigniter.com/user_guide/database/examples.html vea la sección Consulta estándar con resultados múltiples (versión de matriz)
$data = $this->db->get_where(''columnname'',array(''code'' => ''B''));
$this->db->where_in(''columnname'',$data);
$this->db->where(''code !='',''B'');
$query = $this->db->get();
return $query->result_array();