【问题标题】:SELECT query from field having multiple value with WHERE_IN clause使用 WHERE_IN 子句从具有多个值的字段中选择查询
【发布时间】:2016-11-09 07:09:42
【问题描述】:

以下是 VIEW search_resultskills 列包含 GROUP_CONCAT 的值与其他表中的值。

现在我正在尝试使用 where_in 子句从此 VIEW 中选择值,如下所示:

$s_id = array('2D Design','3D Design');

$this->db->select('id');
$this->db->from('search_result');
$this->db->where_in('skills',$s_id);  

执行此查询时,结果只有 3 行,即仅包含 2D 设计2D 设计 的技能。

我想显示所有包含任何该技能的行作为输出。所以请帮我做这件事。

【问题讨论】:

  • 尝试使用LIKE操作符
  • @viki888 感谢您的评论。下面的答案非常适合我。

标签: mysql sql codeigniter views where-in


【解决方案1】:

我认为你需要在这里使用FIND_IN_SET

$s_id = array('2D Design','3D Design');

$this->db->select('id');
$this->db->from('search_result');
$this->db->where("FIND_IN_SET('$s_id[0]', skills) != ", 0);

for($x=1; $x < count($s_id); $x++) {
    $this->db->or_where("FIND_IN_SET('$s_id[$x]', skills) != ", 0);
}

这里的逻辑是,您实际上希望对数组中的每个技能使用FIND_IN_SET,以查看它是否包含在表格中的技能CSV列表中。您不能通过一次调用来执行此操作,并且每个检查都应该在 WHERE 子句中一起进行。

【讨论】:

  • 如果我删除 where 子句并在 for 循环中更改 $x=0 会怎样?
  • @Shihas 这可能起作用,这取决于or_where 的行为。如果可以在不先调用where() 的情况下调用它,那么它可能没问题。否则,坚持我给你的代码。
猜你喜欢
  • 1970-01-01
  • 2014-12-07
  • 1970-01-01
  • 1970-01-01
  • 2019-10-25
  • 1970-01-01
  • 2019-07-03
  • 2012-05-30
  • 1970-01-01
相关资源
最近更新 更多