ci mysql in,在codeigniter中使用Mysql WHERE IN子句

I have the following mysql query. Could you please tell me how to write the same query in Codeigniter's way ?

SELECT * FROM myTable

WHERE trans_id IN ( SELECT trans_id FROM myTable WHERE code='B')

AND code!='B'

解决方案

You can use sub query way of codeigniter to do this for this purpose you will have to hack codeigniter. like this

Go to system/database/DB_active_rec.php

Remove public or protected keyword from these functions

public function _compile_select($select_override = FALSE)

public function _reset_select()

Now subquery writing in available

And now here is your query with 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');

And the thing is done. Cheers!!!

Note : While using sub queries you must use

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

instead of

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

which runs the query.

Watch this too

Note : In Codeigntier 3 these functions are already public so you do not need to hack them.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值