#mysql #sql
#mysql #sql
Вопрос:
Я работаю над панелью поиска. У меня есть два поля category и input. Если пользователь вводит запрос и не выбирает категорию
Я хочу получить все записи, соответствующие ключевому слову. Я сделал это, и это работает отлично.
Теперь, если пользователь выберет категорию с ключевым словом. Я хочу получить записи, в которых категория является выбранной пользователем категорией.
SELECT uid, title, posted FROM mytable WHERE title LIKE '%anna%' OR tags LIKE '%anna%' AND categories LIKE '3d29d6fdaf670c8df35b630e' AND status = 'active' ORDER BY id DESC
Приведенный выше запрос не возвращает записи с той же категорией.
У меня есть столбец категорий в mytable, и может быть несколько категорий
3d29d6fdaf670c8df35b630e, bd414a2c5860e6cba1794040ef46fdcb
вот так
Как я могу это сделать?
Ответ №1:
Здесь необходимо правильно использовать круглые скобки, чтобы получить правильный логический порядок, который вы намереваетесь:
SELECT uid, title, posted
FROM mytable
WHERE
(title LIKE '%anna%' OR tags LIKE '%anna%') AND
categories LIKE '3d29d6fdaf670c8df35b630e' AND
status = 'active'
ORDER BY id DESC;
Версия, которая у вас была, фактически использовала это WHERE
предложение:
WHERE
title LIKE '%anna%' OR
(tags LIKE '%anna%' AND
categories LIKE '3d29d6fdaf670c8df35b630e' AND
status = 'active')
Комментарии:
1. Большое спасибо за объяснение и помощь 🙂