我有一個存儲產品的數據庫表。每個產品可以有多種顏色。每個顏色由它的ID,而不是文本描述,如「紅色」,「黃色」等。當$_POST['colour']
陣列內裂爲一個字符串(由逗號分隔)表示則存儲在表中:MySQL WHERE子句和分隔字符串的問題
product_id | colour
----------------------
1 | 1,2
2 | 10
3 | 7,9
最近我嘗試創建一個搜索表單,它可以選擇多種顏色並搜索數據庫表,以查看是否有任何產品至少包含搜索數組中的一種顏色。因此,如果訪問者想要查看顏色1和9的產品,則需要在「顏色」列中搜索這兩個值。
我不能使用WHERE colour IN (1,9)
,因爲我認爲只有當列中有一個值(而不是多個值的分隔數組)時纔有效。我也不能使用WHERE colour LIKE 1 OR WHERE colour LIKE 9
,因爲它會返回顏色ID爲10或11或12等的產品。
有誰知道我該如何做到這一點?
[一個陣列內的mysql選擇查詢(可能重複http://stackoverflow.com/questions/8840232/mysql-select-query-within -a-array) – Wrikken 2012-01-15 01:45:19
[在數據庫列中存儲逗號分隔列表真的很糟糕嗎?](http://stackoverflow.com/questions/3653462/is-storing-a-comma-separated-list-in-a -database-column-really-that-bad) – 2012-01-15 01:45:20
顏色列的定義是什麼? – 2012-01-15 01:45:35