0

我有桌子T1T2. 在T1我的列cat_id中,数组中的整数值由逗号分隔,例如

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();

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

4

2 回答 2

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。IN 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);           
于 2012-12-05T09:57:08.137 回答
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)
  }
}
于 2012-12-18T07:57:05.983 回答