Запрос на фильтры, выбранные пользователем - PullRequest
1 голос
/ 29 февраля 2012

Я создаю портал вакансий, где пользователи могут искать вакансии по ключевым словам, категории вакансий, диапазону зарплат, названию компании ..... и я хочу, чтобы, если пользователь выбрал только один вариант и начал поиск, он получит всерезультаты, которые принадлежат этому конкретному параметру .... и если пользователь выбирает несколько параметров, то результат должен быть отфильтрован в соответствии с этим ... поэтому здесь я не могу запросить данные .... Я просто хочу, чтобы поиск был сделантолько теми параметрами, которые предоставлены пользователем ... другие параметры, значения которых не предоставлены, не должны быть частью поиска / запроса ....

Это плохой пример того, что я собираюсь сделать.... Этот запрос только для того, чтобы дать вам идею ... Это не правильно

SELECT        employer.phone, employer.mobile, employer.company, employer.country, employer.state, employer.city, employer.address, jobs.title, jobs.category, jobs.salary, 
                         jobs.skills, jobs.contactPerson, jobs.exper, jobs.email AS Expr1, jobs.jobsummary, jobs.posteddate
FROM            employer INNER JOIN
                         jobs ON employer.id = jobs.empid
WHERE        (jobs.skills LIKE '%' + @keyword + '%') OR
                         (employer.city LIKE '%' + @location + '%') OR
                         (employer.state LIKE '%' + @location + '%')

Ответы [ 2 ]

1 голос
/ 29 февраля 2012

Используйте логику AND в предложении where и установите неиспользуемые переменные пустыми, и все будет работать: если @keywords пусто, (jobs.skills LIKE '%%') будет соответствовать всем jobs.skills.

0 голосов
/ 29 февраля 2012

Вы можете использовать этот подход

SELECT        employer.phone, employer.mobile, employer.company, employer.country, employer.state, employer.city, employer.address, jobs.title, jobs.category, jobs.salary, 
                         jobs.skills, jobs.contactPerson, jobs.exper, jobs.email AS Expr1, jobs.jobsummary, jobs.posteddate
FROM            employer INNER JOIN
                         jobs ON employer.id = jobs.empid
WHERE        (jobs.skills LIKE '%' + @keyword + '%' OR @keyword is null)
              AND (employer.city LIKE '%' + @location + '%' OR @location is null) 
              AND (employer.state LIKE '%' + @location + '%' OR @location is null)

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

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