Mysql 如何根据某些条件从数组中获取数据
我有表Mysql 如何根据某些条件从数组中获取数据,mysql,codeigniter,Mysql,Codeigniter,我有表T1和T2。在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
T1
和T2
。在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();
但是对于id=1
,问题仍然存在,如果T1
as 51,5中有数据,它也会被选中。
我该如何解决这个问题。提前感谢尝试使用“在集合中查找”
SELECT
*
FROM T1
LEFT JOIN T2 on FIND_IN_SET(T2.id, T1.cat_id)
WHERE T1.status = 'yes' AND T2.cat = 1
如果您认为额外的记录即将出现,您可以使用内部连接而不是左连接。
内码点火器
$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);
对于上述问题,使用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)
}
}
不客气,但最好的做法是使用分隔行和逗号分隔列