SQL & FIND_IN_SET для фильтрации - PullRequest
       0

SQL & FIND_IN_SET для фильтрации

0 голосов
/ 24 ноября 2018

На главной странице у меня есть список заведений, которые вы можете отфильтровать по местоположению, названию и услугам, предоставляемым этим заведением.У меня есть таблица SQL, в которой есть список заведений с числовым определением предоставляемых услуг:

id | name            | location | services
1  | Establishment 1 | Florida  | 2,5
2  | Establishment 2 | New York | 1,3,5

На главной странице службы должны быть отфильтрованы по флажкам.

Iищу запрос SQL, который будет фильтровать результаты на основе выбранных услуг (например, если пользователь выбрал службу 5 - он покажет оба результата из таблицы выше, но если пользователь выбирает службы 5 и 1 - только служба с идентификатором 2,если выбирает 5 и 4 - без результатов).

Я обнаружил, что FIND_IN_SET может работать, но кажется, что он не работает, если пользователь выбирает более одной службы:

SELECT * FROM table1 t WHERE FIND_IN_SET(?, t.services) > 0

?- bind input, который отправляется POST AJAX как конкатенация выбранных сервисов, разделенных запятыми - например.услуги = "1,3,4".

1 Ответ

0 голосов
/ 24 ноября 2018

Вы можете попробовать REGEXP:

Проверьте это:

SELECT * FROM testtbl t WHERE t.services REGEXP '(^|,)(1|3|4)(,|$)'

Вам необходимо передать значение через запятую в этой форме => 1|3|4

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...