Я создал запрос, который возвращает список продуктов с их полями и значениями. Теперь я хочу выполнить поиск по полям для определенного значения и получить список результатов, соответствующий этому поисковому запросу. Проблема в том, что я хочу конструкцию AND, поэтому значение fieldx должно быть как% car%, а полевое значение должно быть как% chrome%.Запрос фильтра Mysql (AND) для нескольких полей в нескольких соединенных строках
Здесь `s пример моего запроса и ResultSet:
Запроса
SELECT p.id as product,pf.field_name,pfv.field_value
FROM product p
JOIN field pf ON pf.product_id = p.product_id
JOIN field_val pfv ON pfv.field_id = pf.field_id
Resultset
product | field_name | field_value
pr1 | meta_title | Example text
pr1 | meta_kw | keyword,keyword1
pr1 | prod_name | Product 1
pr2 ....
Так с вышеупомянутым запросом и результирующим в виде I хочу сделать следующее: Запросить все продукты, в которых meta_title co ntains 'Example' и где prod_name содержит 'Product'. После этого я хочу сгруппировать результаты, чтобы возвращались только те продукты, в которых совпадают оба поисковых запроса.
Я пробовал все, что мог придумать, и я пробовал много решений по одному и тому же вопросу, но, по-моему, у меня разные, потому что мне нужно совпадение И по имени поля, а также значение по нескольким строкам.
Например, я попробовал, добавив это как ИНЕКЕ:
WHERE
(field_name = 'meta_title' AND field_value LIKE '%Example%') AND
(field_name = 'prod_name' AND field_value LIKE '%Product%')
Очевидно, что эта работа, потому что выигранное `t после того, как первый, где на meta_title нет результата осталось других имен полей. Но изменение ГДЕ к ИЛИ не дало бы мне желаемого результата.
Я также пробовал с HAVING, но похоже на тот же результат.
Кто-нибудь знает, как решить это, или это просто невозможно?
Отлично! Работает как шарм и имеет смысл. Я не думал о комбинации «Имея с« Где », что фактически заставляет его действовать как оператор И. Благодаря! – user1281146