Условие в фильтре написали как (is_paying = 1 AND is_mobile = 1) OR (is_paying = 1 AND NOT (is_mobile = 1)). Какому более простому условию оно эквивалентно?

Ais_mobile = 1
Bis_paying = 1 AND is_mobile = 1
Cis_paying = 1 OR is_mobile = 1
Dis_paying = 1
Правильный ответ. Здесь is_paying = 1 общий для обеих веток, а is_mobile = 1 OR NOT (is_mobile = 1) является always true.

Разбор

Исходное выражение покрывает оба случая для is_mobile: когда флаг истинный и когда он ложный, но в обоих случаях требуется is_paying = 1. Поэтому объединение двух веток через OR не добавляет новых ограничений по is_mobile. Упрощение до is_paying = 1 делает фильтр короче и снижает риск логических ошибок при дальнейших правках.

Проверь себя · 1/3разбор после ответа
Флаг is_active принимает только 0 или 1. Какое условие является always true и не отфильтрует ни одной строки?
Открыть Карьерник в Telegram

Ещё вопросы по теме «Булева логика и фильтры»