我如何根据某些条件从数组中获取数据

时间:2012-12-05 09:48:10

标签: mysql codeigniter

我有表T1T2。在T1中,我的列cat_id具有由commma分隔的数组中的整数值,例如

row1=1; row2=1,41; row3=40,1

T2中,我的列ID具有单个整数值,例如

row1=1; row2=40; row3=41; row4=0

现在,根据从T2中选择的ID,我需要来自T1的数据。

我的问题是如何在T1中应用条件。我正在使用CodeIgniter。我试过这样的。

$this->db->select('*');
$this->db->where('status', 'yes');               
$this->db->where('cat', '1');
$this->db->like('category_id', '1');
$this->db->or_like('category_id', ',1'); 
$this->db->or_like('category_id', '1,');
$this->db->get('T1')->result_array();

但问题仍然存在于id = 1,如果T1中的数据为51,5,它也会被选中。 我该如何解决这个问题。提前谢谢

2 个答案:

答案 0 :(得分:1)

尝试使用FIND_IN_SET

SELECT 
    * 
FROM T1
LEFT JOIN T2 on FIND_IN_SET(T2.id, T1.cat_id)
WHERE T1.status = 'yes' AND T2.cat = 1

如果您认为额外的记录即将到来,您可以使用INNER JOIN而不是LEFT JOIN。 在COdeigniter

$sql_query  =   "
            SELECT 
                * 
            FROM T1
            LEFT JOIN T2 on FIND_IN_SET(T2.id, T1.cat_id)
            WHERE T1.status = 'yes' AND T2.cat = 1  
            ";

$this->db->query($sql_query);           

答案 1 :(得分:0)

关于上述问题,使用in_array()也有帮助。

$this->db->select('cat_id');
$row = $this->db->get('T1')->result_array();

$list = array();
foreach($row as $ind=>$val){
  $c_id = explode(',', $row['cat_id);
  if(in_array('1', $c_id){
    array_push($list, $val)
  }
}