Отфильтруйте мой результат по нескольким выборам / выпадающим спискам, каждый из которых будет принимать несколько значений - PullRequest
0 голосов
/ 19 марта 2020

У меня есть несколько выпадающих списков

  1. Провинция
  2. Район
  3. Техсил

Все могут выбрать несколько значений и по умолчанию выбрать все .

Теперь я хочу написать эффективный запрос SQL, чтобы выполнить работу с ним. Я думаю использовать оператор where col in (), но когда я не передаю значение, это вызывает ошибку.

Что может быть лучше для достижения sh полученных результатов.

требуется обновление по запросу для получения дополнительной информации

Я разработка одной панели мониторинга, в которой мои диаграммы должны реагировать с несколькими раскрывающимися списками (фильтрами), которые выбирают несколько возможностей, и я предполагаю, что предложение where col in () может поддержать меня. Единственная проблема заключается в том, что при использовании этого условия он не может быть пустым, из-за чего выборка данных с сервера SQL невозможна, если не применен фильтр.

1 Ответ

0 голосов
/ 21 марта 2020

Я нашел решение, прочитав эту статью arrays-in- sql

Например: провинция = [1,2,3], район = [1,2,3 ] сначала преобразуйте провинцию и район в строку, например, провинция = '1,2,3', создайте процедуру с параметрами, подобными следующим

CREATE PROC myFilterTable ( @province AS VARCHAR ( 50 ) = NULL,@district AS VARCHAR ( 50 ) = NULL ) AS BEGIN SELECT * FROM myTable WHERE ( @province IS NULL OR province_id IN ( SELECT CONVERT ( INT, VALUE ) FROM string_split ( @province, ',' ) ) ) AND ( @district IS NULL OR district_id IN ( SELECT CONVERT ( INT, VALUE ) FROM string_split ( @district, ',' ) ) ) END

Теперь выполните: exec myFilter '1,2', '1,3'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...