En utilisant Mysql où dans la clause dans codeigniter

j'ai la requête mysql suivante. Pourriez-vous me dire comment écrire la même requête dans Codeigniter façon ?

SELECT * FROM myTable 
         WHERE trans_id IN ( SELECT trans_id FROM myTable WHERE code='B') 
         AND code!='B'
17
demandé sur black_belt 2012-06-14 01:07:36

4 réponses

vous pouvez utiliser la méthode sub query de codeigniter pour ce faire, vous devrez Hacker codeigniter. comme ceci

Allez à system/database / DB_active_rec.php Supprimer le mot-clé public ou protégé de ces fonctions

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

maintenant subquery écriture dans Disponible Et maintenant voici votre requête avec active record

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

Et la chose est faite. Acclamations!!!

Remarque : lors de l'utilisation de sous vous devez utiliser

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

au lieu de

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

qui exécute la requête.

Voir aussi

Comment puis-je réécrire ce SQL dans les enregistrements actifs de CodeIgniter?

Note : dans Codeigntier 3 ces fonctions sont déjà publiques donc vous n'avez pas besoin de les pirater.

25
répondu Muhammad Raheel 2017-05-23 12:18:14
$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();
17
répondu areeb 2013-04-18 14:20:11

essayez celui-ci:

$this->db->select("*");
$this->db->where_in("(SELECT trans_id FROM myTable WHERE code = 'B')");
$this->db->where('code !=', 'B');
$this->db->get('myTable');

Note: $this->db->select("*"); est facultatif lorsque vous sélectionnez toutes les colonnes de la table

7
répondu Code Prank 2012-06-14 08:36:30

essayez ceci:

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

n'Est pas active record, mais est codeigniter façon http://codeigniter.com/user_guide/database/examples.html voir la section requête Standard Avec résultats multiples (version du tableau)

0
répondu mvpasarel 2012-06-13 21:23:22