Php и MySQL ГРУППИРУЮТ ОБЪЕДИНЕНИЕ с разделительной запятой и выполняют поиск, где объединение по запятой


Можно ли выбрать в Group_concat с разделительной запятой и выполнить поиск, где объединить запятой Вот мой пример mysql:

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 

Я хочу сгруппировать параметры_concat_values_id

ВЫБЕРИТЕ *, GROUP_CONCAT(РАЗДЕЛИТЕЛЬ ИДЕНТИФИКАТОРОВ options_values_id ',') ИЗ products_attributes ГРУППИРОВАТЬ по 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

Теперь моя проблема в том, как я найду product_id путем поиска (option_values_id с запятой), если мое значение равно 1,2 или 2,4, то я получу только product_id=30. Но если бы я получил значение 1,3, я ничего не получит. Потому что у product_id 30 нет идентификатора option_values_id 3 , а у product_id 31 нет идентификатора option_values_id 1.

Я пробую этот код, но не могу получить идентификатор продукта

    SELECT * , GROUP_CONCAT( options_values_id
SEPARATOR ',' )
FROM `products_attributes` WHERE CONCAT(',',options_values_id,',') LIKE '%,1,2,%'
GROUP BY products_id
Author: Alireza Fallah, 2013-06-06

1 answers

Попробуйте это:

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)
 8
Author: Stephan, 2013-06-06 09:52:52