Я пытаюсь условно создать предложение WHERE
в хранимой процедуре. Он должен действовать как фильтр для логического столбца, и мне нужно только два результата - либо принимать только истинные значения, либо принимать все из них (нет ситуации, когда мне нужны только ложные значения).
Пункт, который я пытаюсь использовать, это -
WHERE
(@customerInactive = -1 OR `listcustomers`.`active` = 1)
с идеей, что либо параметр равен -1 (без фильтра), либо у нас есть фильтр, и мы должны сделать listcustomers.active = 1.
Я тоже пытался быть более откровенным
WHERE
((@customerInactive = 1 AND `listcustomers`.`active` = 1) OR
(@customerInactive <> 1 AND 1=1))
Второй заканчивается тем, что ничего не возвращается. Как я могу это исправить?
Это хранимая процедура, использующая MySQL 5.6.
Редактировать: Учитывая, что мне сказали, что мой первый запрос должен это сделать, но он всегда возвращает listcustomers
. active
= 1, возможно, это проблема типа? Я сделал customerInactive int (11). Я также немного попробовал (1), но у меня все та же проблема, независимо от моего параметра, я получаю ИСТИННЫЙ фильтр. Или в случае второго запроса нет результатов.
Редактировать 2: Я не думаю, что это должно иметь значение, но окончательный результат - объединение нескольких таблиц, из которых мне придется выполнить такую же фильтрацию. Весь SQL-запрос можно посмотреть здесь - https://pastebin.com/6wL4ZtnF