【发布时间】:2013-03-07 14:42:05
【问题描述】:
我很抱歉问这个愚蠢的问题,但我对这个查询有点困惑。
$this->db->select('user_package.status,user_package.remaining,user_package.date,package.pname,package.pcount');
$this->db->join('user_package','user_package.pid=package.pid','left');
$this->db->where('user_package.status','Active');
$this->db->or_where('user_package.status','Pending');
$this->db->where('user_package.uid',$rows->uid);
$user_package=$this->db->get('package');
这是我在 mysql 面板中运行的类似查询以检查输出
Select up.status,up.remaining,up.date,p.pname,up.uid,p.pcount FROM user_package up LEFT JOIN package p ON up.pid=p.pid where up.status="Active" OR up.status="Pending" AND up.uid=7
这是查询的输出
我想要的是只找到那些 uid 为 7 的行并检查它们的状态是 Pending 还是 Active。但输出不同。它取出 7 和 8 uid 的 Pending 和 Active 记录。
【问题讨论】:
-
你认为的
(where up.status="Active" OR up.status="Pending") AND up.uid=7可能被解释为where up.status="Active" OR (up.status="Pending" AND up.uid=7) -
你是对的。但是在codeigniter中怎么做呢?
-
尝试回显查询。使用这个,回显 $this->db->last_query();并相应地操作查询
标签: sql codeigniter join left-join