[英]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.