簡體   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