Можно ли выбрать в Group_concat с запятой разделителя и искать, где 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
Я хочу GROUP_CONCAT options_values_id
SELECT *, GROUP_CONCAT (options_values_id SEPARATOR ',') FROM products_attributes
GROUP by 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 не имеет опции_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
Попробуй это:
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)