У меня есть поисковый запрос продукта, который возвращает строки, подобные этой:
| id | name | search tag |
| 1 | cat | furry |
| 1 | cat | ginger |
| 2 | dog | furry |
Мне нужно получить одну строку, которая соответствует более чем одному поисковому тегу - для этого примера поиск по пушистому AND
имбирь не возвращает строк, поскольку в строке есть только один поисковый тег (это потому что для получения этих результатов я использую INNER JOIN
).
Мой вопрос: что мне нужно сделать, чтобы иметь возможность проверить на furry AND ginger
в запросе и вернуть кошку, но не собаку?
Я делаю это на PHP.
UPDATE
Чтобы справиться с тем, что пользователи вводят дубликаты тегов, простое исправление условия HAVING
будет возвращать строки с дублирующимися тегами вместо их игнорирования:
mysql> select id, name, group_concat(tag) as tags,
count(tag) as cnt from animals where tag in ('furry', 'ginger')
group by id HAVING cnt>=2;