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

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

Разбор

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

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

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