簡體   English   中英

mysql查詢查找類別

[英]mysql query for find category

我有一個這樣的產品表

id   |   name   | category 
--------------------------
1    |   name1  |  2,1,5,8,9
2    |   name2  |  2,1
3    |   name3  |  5,8

我有一個這樣的類別表

id   |   catname   
----------------
1    |   cat_name1  
2    |   cat_name2  
5    |   cat_name3 
8    |   cat_name3 
9    |   cat_name3 

每個產品可以有多個類別。 與該產品關聯的類別在產品表中的“類別”行中另存為“ 1、5、8、7”,其中每個代表類別表的ID。

現在,我要顯示所有產品都屬於特定類別。

我對查詢處理感到困惑。

這是保存此類數據的正確格式嗎? 請指教

關聯表:product-category將簡化您想要的查詢。

假設一個ProductCategory表具有列(prod_id,cat_id),則您的查詢(基於類別的名稱)將是:

  SELECT p.name FROM products p,product_category pc ,category c
  WHERE c.name='your_categ' 
  AND c.id = pc.categ_id
  AND p.id = pc.prod_id

我將為產品類別映射添加一個額外的表。

SELECT p.name 
 FROM products p 
   JOIN product_category pc ON  p.id=pc.prod_id 
   JOIN Category c ON c.id = pc.categ_id
 WHERE c.name='Category' 

不,這不是存儲產品類別的正確方法,表未根據3NF進行規范化。 由於產品可以屬於許多類別,並且一個類別已分配給許多產品,因此您必須具有一個M:N(多對多)表。 products_categories(prod_id, categ_id)並搜索此表。

SELECT * 
FROM products 
WHERE 
    category LIKE "ID,%" OR 
    category LIKE "%,ID,%" OR 
    category LIKE "%,ID" 

上面的查詢應該起作用-注意性能問題,因為其他人建議鏈接表是唯一的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM