从特定类别codeigniter中选择产品

时间:2017-12-06 05:25:39

标签: php mysql codeigniter

产品有以下类别

product_id   category_id
     2            1,2
     3            1,3
     4            1,13
     2            2,5

我想选择特定类别的产品,例如所有产品来自类别2.什么是sql语法

3 个答案:

答案 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表格时的产品名称一样