Вы можете использовать FIND_IN_SET (str, strlist) например:
SELECT * FROM produce AS p WHERE FIND_IN_SET('C', attributes)
Вы также можете использовать логические операторы, такие как AND
или OR
.
Но лучшим решением было бы создать третий способ, который представляет связь между ними.(Самый простой способ, если у вас есть цифровые клавиши, если ваши таблицы)
produce_attributes (produce_id, attributes_id)
и ...
SELECT *
FROM produce AS p
LEFT JOIN produce_attributes AS pa ON pa.produce_id = p.id
LEFT JOIN attributesKey AS ak ON ak.id = pa.attributes_id
WHERE ak.name = 'Crunchy'
Редактировать:
ВашattributesKey
называется диктаторской таблицей , поскольку она разрешает только коды в значения.И у вас есть отношения многие ко многим между attributeKey и производим.Отношения «многие ко многим» представлены связующей таблицей в управлении реляционными базами данных (или, по крайней мере, это наиболее распространенное представление об этом).
Поэтому больше всего я рекомендую вам цифровые клавиши и третью таблицу.