繁体   English   中英

从特定类别的代码选择器中选择产品

[英]select products from specific category codeigniter

提供以下类别的产品

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

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

您可以使用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();

您可以尝试使用此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();
    ?>

希望对您有所帮助。

您可以使用简单的SQL查询,并在模型中使用它。

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

或您要创建的任何条件。 就像您想获取产品名称一样,只需从product_table JOIN

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM