У меня на сайте есть страница с несколькими выпадающими списками в качестве фильтров.
Так что процедура SQL для этой страницы будет выглядеть примерно так
IF @Filter1 = 0, @Filter2 = 0, @Filter3 = 0
BEGIN
SELECT * FROM Table1
END
ELSE IF @Filter1 = 1, @Filter2 = 0, @Filter3 = 0
BEGIN
SELECT * FROM Table2
END
В начале, было только несколько результатов на фильтр, поэтому было не так много перестановок. Однако было добавлено больше фильтров, так что теперь существует более 20 проверок IF ELSE.
Так что, если у каждого фильтра есть 5 опций, мне нужно будет выполнить 5 * 5 * 5 = 125, ЕСЛИ ELSE проверяет, чтобы вернуть данные, зависящие от фильтров.
Обновление
Первый фильтр изменяет условие WHERE, второй фильтр добавляет дополнительные таблицы в набор результатов, третий фильтр изменяет условие ORDER BY
Как сделать этот запрос более масштабируемым, чтобы мне не приходилось писать новую связку операторов IF ELSE для проверки каждого условия каждый раз, когда новый фильтр добавляется в список, кроме использования динамического SQL ...