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
3
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