@MaxGoodWork

Как составить условие, которое всегда верно?

Делаю выборку строк по нескольким условиям - продажа или покупка (в таблице выражен как bool), цене (если она не больше заданной), количеству (также не больше заданного пользователем). Получается запрос, например такой:

SELECT * FROM products WHERE (bay=1) AND (price <= 5500) AND (quantity <= 3);

Но есть одна проблема - пользователь может не фильтровать строки по одному или несколькими параметрам. Можно к примеру для такого случая написать для цены отрицательное число, она естественно не может быть такой, но это условие абсолютно не универсальное, да хоть для bool.
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 2
Если я правильно понимаю вашу проблему, нужно попросту конструировать запрос в зависимости от переданных значений. Т.е. если пользователь не указал фильтр, то и в запросе такое условие AND должно отсутствовать. Для неуказанного вами ЯП, должен существовать какой-либо SQL Builder, удобно подходящий для решения такой задачи.
Ответ написан
@d-stream
Готовые решения - не подаю, но...
Для более развитой фильтрации в виде набора нечто - стоит подумать о stored procedure, которая например будет получать кучку параметров фильтра

ну и в ней уже в простом случае единообразное

where
param1 is null or filed1=param1
...
and paramN is null or filedN=paramN

само собой параметр может быть неким энумоподобным который потащит за собой кучку предварительных запросов/вычислений (например только товары, которые были реализованы другим клиентам из этой же группы и т.п.)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы