查询中的多个相似列

时间:2012-03-27 19:40:33

标签: sql codeigniter sql-like

我正在使用CodeIgniter 2.1。

我有一个包含firstname和lastname以及其他列的表 我希望得到那些firstname like '%q%' OR lastname like '%q' AND Status = 1

的客户

我正在使用以下Active Record集:

$this->db->select("$this->table.*, $this->table.Active as 'Status'");
$like = array(
 "$this->table.FirstName" => $where['customer_name'],
 "$this->table.LastName" => $where['customer_name']
);
$this->db->or_like($like);

生成的查询是:

SELECT `customers`.*, `customers`.`Active` as 'Status' 
WHERE `customers`.`Active` = '1' AND 
      `customers`.`FirstName` LIKE '%michael%' OR 
      `customers`.`LastName` LIKE '%michael%' 
ORDER BY `customers`.`RegDate` desc LIMIT 10

以上查询为那些以名字或姓氏“活跃”为1的“michael”的客户带来了所有记录,其中包含michael他们是否有效。

我需要那些在名字或姓氏中有'micheal'并且有效= 1的记录,我知道在自定义查询中,如果我在小括号'()'之间放置Like子句,它会给我我想要的结果。 我希望将上述查询解析为:

SELECT `customers`.*, `customers`.`Active` as 'Status' 
WHERE `customers`.`Active` = '1' AND 
      (`customers`.`FirstName` LIKE '%michael%' OR 
      `customers`.`LastName` LIKE '%michael%') 
       ORDER BY `customers`.`RegDate` desc LIMIT 10

3 个答案:

答案 0 :(得分:0)

我认为您还需要使用or_where函数

答案 1 :(得分:0)

在codeigniter中放置多个列的where和or_like时,分组不正确。 我也遇到过这个问题,

最好的解决方案是以字符串格式编写查询,然后执行它。

答案 2 :(得分:0)

 //You can used like that 

$this->db->where("(`car_model` LIKE '%$search_keyword_new%' OR  `car_make_model` LIKE '%$search_keyword_new%' OR `car_name` LIKE '%$search_keyword_new%')");
$this->db->where('user_id',$user_id);