Есть мысль организовать поиск товаров по их характеристикам через JSON_EXTRACT. В таблицу product добавить поле params (JSON) и хранить в нем информацию по хар-кам в следующем виде:
INSERT INTO product (`params`)
VALUES ('{
"group1": [10, 12, 15, 16],
"group2": [21, 27],
"group3": [36],
"group5": [52]
}'),
('{
"group1": [11, 12, 17, 19],
"group2": [22],
"group3": [38,39],
"group4": [48]
}'),
('{
"group1": [12, 16],
"group2": [20],
"group3": [33],
"group4": [44]
}'),
('{
"group1": [11, 18],
"group2": [20, 27, 29],
"group3": [36],
"group5": [52]
}');
где group1 - это ИД группы фильтров, а [11, 18] - это ИД значений фильтров.
При этом значения хранятся в виде массива, поскольку в рамках одной группы у товара может быть выбрано несколько значений. Например, цвет вещи (group1): красный (11) и зеленый (12); размеры (group2): S (20), M (27) и L (29) и т.п.
При этом когда фильтруются товары по данным хар-кам, то в рамках группы поиск идет по условию ИЛИ, а между группами И. То есть: (Красный ИЛИ Зеленый ИЛИ Синий) И (S ИЛИ M)
Вопрос: можно ли организовать такую выборку с помощью JSON_EXTRACT или иной функции для работы с полем JSON через sql запрос?