0

私はテーブルT1とを持っていT2ます。私は、commmaで区切られた配列に整数値T1を持つ列を持っています。cat_id

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

私はT2単一の整数値を持つ列IDを持っています、例えば

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

から選択したIDに応じて、からのT2データが必要です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

追加のレコードが来ると思われる場合は、LEFTJOINの代わりにINNERJOINを使用できます。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 に答える