2016-03-15 2 views
-2
пользователя

Поддержки отобрал 10 столбцов для поиска с экрана в ASP.NETПоиска минимальных Колонные

Нам нужно найти минимум 8 столбцов, соответствующих в базе данных

Как написать SQL запроса для согласования любых 8 столбцов из 10

Мы должны соответствовать только 8 столбцов Matching из 10

+0

Просьба предоставить некоторые образцы данных и ожидаемый результат. – sagi

ответ

0

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

Что-то вроде этого:

where 
-- How many columns matched? 
-- Score 1 for each matching column 
0 
+ case when column1 = @search1 then 1 else 0 end 
+ case when column2 = @search2 then 1 else 0 end 
+ case when column3 = @search3 then 1 else 0 end 
+ case when column4 = @search4 then 1 else 0 end 
+ case when column5 = @search5 then 1 else 0 end 
+ case when column6 = @search6 then 1 else 0 end 
+ case when column7 = @search7 then 1 else 0 end 
+ case when column8 = @search8 then 1 else 0 end 
+ case when column9 = @search9 then 1 else 0 end 
+ case when column10 = @search10 then 1 else 0 end 

>= 8 

Вы можете обобщить этот подход дает различные результаты для разных столбцов.

Обратите внимание, что этот подход не будет использовать индексы в любом столбце поиска.

Однако, если в нескольких столбцах есть индексы, вы можете улучшить производительность, используя их. (Чтобы соответствовать восьми из десяти столбцов, используя индексы, по крайней мере три столбца должны иметь индекс).

+0

ваш запрос приносит данные для отдельных столбцов, сопоставленных запрос должен соответствовать любому 8 столбцам из 10 запросов одним из возможных решений, с которыми я столкнулся, является SELECT * FROM TABLE WHERE Column1 = Value1 AND Columns2 = Value2 .... до 8 столбцов UNION SELECT * FROM TABLE WHERE Column2 = Value1 AND Columns3 = Value2 .... до 8 столбцов – samdubey

+0

@samdubey пример выше создает «оценку», где каждый соответствующий столбец добавляет 1 к счету. Затем он проверяет, равен ли счет 8 или выше. Ваше предложение требует выбрать 8 из 10 комбинаций = 90 отдельных запросов на выбор. – Ben

+0

запрос отлично работает для столбцов с оператором = в поиске. как насчет оператора в поисковом запросе? – samdubey