0

我真的很抱歉问这个愚蠢的问题,但我对这个查询有点困惑。

$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

这是查询的输出

mysql输出

我想要的是只找到那些 uid 为 7 的行并检查它们的状态是 Pending 还是 Active。但输出不同。它取出具有 7 和 8 uid 的 Pending 和 Active 记录。

4

2 回答 2

0

而不是使用 $this->db->where 尝试使用 $this->db->where_in

这应该将结果限制为您需要的 ID。

例如

$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_in('user_package.uid',$rows->uid);
$user_package=$this->db->get('package');
于 2013-03-19T03:19:22.893 回答
0

你必须这样做

$select =   array(
                'up.status',
                'up.remaining',
                'up.date',
                'p.pname',
                'up.uid',
                'p.pcount'  
            );
$status =   array('Active','Pending');      

$this->db
        ->select($select)
        ->from('user_package up')
        ->join('package p','up.pid = p.pid','left')
        ->where_in('up.status',$status)
        ->where('up.uid',$rows->uid)
        ->get();
于 2013-03-19T03:38:32.793 回答