2013-06-06 163 views
3

難道可能在GROUP_CONCAT與分隔逗號選擇 並用逗號 這裏我的MySQL樣本的搜索中,CONCAT:PHP和MySQL GROUP_CONCAT與分隔逗號和搜索中,CONCAT用逗號

products_attributes_id |products_id| options_id|  options_values_id 
39     | 31  |  3  |   3 
35     | 30  |  2  |   2 
38     | 30  |  1  |   1 
40     | 31  |  2  |   2 
41     | 30  |  1  |   4 
42     | 30  |  1  |   5 
43     | 31  |  1  |   4 

我想到GROUP_CONCAT options_values_id

SELECT *,GROUP_CONCAT(options_values_id SEPARATOR '')FROM products_attributes GROUP由products_id

products_attributes_id | products_id | options_id | options_values_id | options_values_id 
35     | 30   | 2   | 2     | 2,1,4,5 
39     | 31   | 3   | 3     | 3,2,4 

現在我的問題是如何通過搜索(option_values_id和逗號)來查找product_id,如果我的值是1,2或2,4,那麼我將只獲得product_id = 30。 但是,如果我得到價值1,3我什麼也得不到。由於PRODUCT_ID 30沒有option_values_id 3 和PRODUCT_ID 31沒有option_values_id 1.

我試試這個代碼,但我不能得到的product_id

SELECT * , GROUP_CONCAT(options_values_id 
SEPARATOR ',') 
FROM `products_attributes` WHERE CONCAT(',',options_values_id,',') LIKE '%,1,2,%' 
GROUP BY products_id 
+0

也許有沒有辦法做到這一點,而不使用「GROUP_CONCAT」?你能給我們更多的背景信息嗎? – Halcyon

回答

8

試試這個:

SELECT 
    products_id , 
    GROUP_CONCAT(options_values_id SEPARATOR ',') as ops 
FROM 
    products_attributes 
GROUP by 
    products_id 
HAVING 
    FIND_IN_SET('1',ops) 
    OR FIND_IN_SET('3',ops) 
+0

非常感謝您的幫助。但我寧願使用和? hehe THANKs很多 – Jows

+0

不用擔心:)高興我可以幫忙也請不要忘記標記你接受的答案 – Stephan

+0

如何?我在這裏很和藹。投票需要15點聲望? – Jows