2012-06-13 19 views
14

Ho la seguente query mysql. Potresti dirmi come scrivere la stessa query in Codeigniter?Utilizzo di Mysql clausola WHERE IN nel codeigniter

SELECT * FROM myTable 
     WHERE trans_id IN (SELECT trans_id FROM myTable WHERE code='B') 
     AND code!='B' 
+0

ha fatto si utilizza subquery in CodeIgniter come ho postato –

+1

Sì, sono riuscito a utilizzare con successo pochi minuti fa .. :) Grazie :) –

+0

@raheelshan. Vuoi controllare questo post. http://stackoverflow.com/q/11045611/1209690 Grazie :) –

risposta

25

È possibile utilizzare la modalità di query secondaria di codeigniter per eseguire questa operazione per questo scopo sarà necessario modificare il codeigniter. Ti piace questa
accedere a Sistema/database/DB_active_rec.php Rimuovere parola chiave pubblica o protetti da queste funzioni

public function _compile_select($select_override = FALSE) 
public function _reset_select() 

scrittura Ora subquery in disponibile Ed ora ecco la tua query con record attivo

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

E la cosa è fatta. Saluti!!!
Nota: Durante l'utilizzo di query sub è necessario utilizzare

$this->db->from('myTable') 

invece di

$this->db->get('myTable') 

che esegue la query.
Guarda anche questo

How can I rewrite this SQL into CodeIgniter's Active Records?

Nota: In Codeigntier 3 queste funzioni sono già di dominio pubblico in modo non c'è bisogno di hack loro.

0

provare questo:

return $this->db->query(" 
    SELECT * FROM myTable 
    WHERE trans_id IN (SELECT trans_id FROM myTable WHERE code='B') 
    AND code!='B' 
    ")->result_array(); 

Non è record attivo, ma è il modo di CodeIgniter http://codeigniter.com/user_guide/database/examples.html vedono standard di query con la sezione Risultati multiple (Array Version)

7

provare questo:

$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 ("*"); è facoltativo quando si selezionano tutte le colonne dalla tabella

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

Questo si adatta perfettamente alle mie esigenze, grazie! – Nebri