bla*_*elt 17 codeigniter codeigniter-2
我有以下mysql查询.你能告诉我如何用Codeigniter的方式编写相同的查询吗?
SELECT * FROM myTable
WHERE trans_id IN ( SELECT trans_id FROM myTable WHERE code='B')
AND code!='B'
Run Code Online (Sandbox Code Playgroud)
Muh*_*eel 25
您可以使用codeigniter的子查询方式为此目的执行此操作,您将不得不破解codeigniter.像这样
转到system/database/DB_active_rec.php从这些函数中删除public或protected关键字
public function _compile_select($select_override = FALSE)
public function _reset_select()
Run Code Online (Sandbox Code Playgroud)
现在子查询写入可用现在这里是您的查询与活动记录
$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');
Run Code Online (Sandbox Code Playgroud)
事情已经完成了.干杯!!!
注意:使用子查询时必须使用
$this->db->from('myTable')
Run Code Online (Sandbox Code Playgroud)
代替
$this->db->get('myTable')
Run Code Online (Sandbox Code Playgroud)
它运行查询.
也看这个
如何将此SQL重写为CodeIgniter的Active Records?
注意:在Codeigntier 3中,这些功能已经公开,因此您无需破解它们.
are*_*eeb 17
$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();
Run Code Online (Sandbox Code Playgroud)
试试这个:
$this->db->select("*");
$this->db->where_in("(SELECT trans_id FROM myTable WHERE code = 'B')");
$this->db->where('code !=', 'B');
$this->db->get('myTable');
Run Code Online (Sandbox Code Playgroud)
注意:$ this-> db-> select("*"); 从表中选择所有列时是可选的
| 归档时间: |
|
| 查看次数: |
93247 次 |
| 最近记录: |