以下是VIEW search_result 。 skills
列包含 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 Design 或 2D Design 的技能。
我想显示包含任何技能的所有行作为输出。所以请帮我这样做。
答案 0 :(得分:3)
我认为你需要在这里使用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
子句中进行OR运算。