Задать вопрос
Davidaa_WoW
@Davidaa_WoW

Как составить запрос с динамической фильтрацией?

Из клиентской части приходит запрос с фильтрами - параметр os_id, 3 значения каждое из которых является булевым. Составляю запрос:
SELECT * FROM `wp_s3cu_authorization_logs`
  WHERE (os_id $operator1 'android' or os_id operator2 'windows10' OR os_id operator3 'macos')
. Подставленные логического 'or' как в данном случае не работает корректно. Т.к. если мне нужно допустим вывести только android - соответственно операторы будут: ['=', '<>', '<>'], будет выводиться и android и windows. Как составить запрос?
  • Вопрос задан
  • 64 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Python-разработчик
    10 месяцев
    Далее
  • ProductStar
    Профессия: Java-разработчик
    9 месяцев
    Далее
  • GB (GeekBrains)
    Профессия Python-разработчик
    10 месяцев
    Далее
Решения вопроса 1
mayton2019
@mayton2019
Bigdata Engineer
Делаешь такой шаблон
SELECT * FROM `wp_s3cu_authorization_logs` WHERE 1=0

а потом к нему добавляешь строки. Если был активирован флажок windows - то добавляешь строку
OR os_id = 'windows10'
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
tsklab
@tsklab
Здесь отвечаю на вопросы.
SELECT * FROM `wp_s3cu_authorization_logs`
  WHERE (operator1 = '=' AND os_id  = 'android')
     OR (operator2 = '=' AND os_id  = 'windows10')
     OR (operator3 = '=' AND os_id  = 'macos')
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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