产品有以下类别
product_id category_id
2 1,2
3 1,3
4 1,13
2 2,5
我想选择特定类别的产品,例如所有产品来自类别2.什么是sql语法
答案 0 :(得分:2)
您可以使用FIND_IN_SET
以逗号分隔值进行搜索。
$this->db->where("FIND_IN_SET( '$category_id' , category_ids) ");
所以你的整个查询就像
$this->db->select();
$this->db->from('table_name');
$this->db->where("FIND_IN_SET( '$category_id' , category_ids) ");
$query = $this->db->get();
return $query->result();
答案 1 :(得分:0)
您可以尝试使用FIND_IN_SET
搜索逗号分隔值。
<?php
$this->db->select();
$this->db->from('table_name');
$this->db->where(' FIND_IN_SET(category_ids, "' . $category_ids . '") > 0', NULL, false);
$query = $this->db->get();
return $query->result();
?>
我希望它会有所帮助。
答案 2 :(得分:0)
您可以使用简单的SQL查询&amp;在你的模型中使用它。
public function get_product_category($category_id)
{
$query = "SELECT * FROM product_table WHERE category_id LIKE '%$categoryid%'";
return $this->db->query($query, $category_id)->result();
}
它会在您的产品表中找到category_id
包含示例2
。
但是,就像M Khalid Junaid所说,你最好了解数据库规范化。
例如:规范化表
这是规范化之前的表格,产品ID在2
上重复如果是主键怎么办?因此,尝试将表格更改为规范化表格,它将对您有所帮助。
product_id category_id
2 1,2
3 1,3
4 1,13
2 2,5
这是在创建名为group_table
的表或其他任何内容后对新表进行规范化。然后将group_id
设为primary_key
group_id product_id category_id
1 2 1
2 2 2
3 3 1
4 3 3
5 4 1
6 4 13
7 2 5
从category_id查找产品的查询更简单,只需
SELECT * FROM group_table WHERE category_id = $category_id
或您要创建的任何条件。就像您想从JOIN
product_table
表格时的产品名称一样