2012-02-29 75 views
1

我正在建立一个工作门户网站,用户可以通过关键字,工作类别,工资范围,公司名称......搜索工作,如果用户只选择一个选项,开始搜索,然后他会得到属于该特定选项的所有结果....如果用户选择多个选项,那么结果应该根据那个过滤...所以这里我无法查询数据....我只是希望仅由用户提供的那些参数进行搜索...其值未提供的其他参数不应该是搜索/查询的一部分...查询用户选择的过滤器

这是一个糟糕的样本我正在想做....这个查询只是为您提供一个想法...这是不正确的

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 + '%') 
+0

尝试像'(@keyword IS NULL OR job.skills LIKE ....'),并将NULL绑定到@keyword,如果它不是一个选定的参数 – 2012-02-29 08:55:32

回答

0

您可以使用此方法

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) 

但请记住,它可能会导致错误的执行计划,并可以更好地创建搜索的不同变种不同的过程。

+0

为什么我们使用过程此查询它将使用PHP那你呢...... – 2012-02-29 09:23:20

1

使用AND逻辑在where子句中,并设置未使用的变量到空白,一切都将正常工作:如果@keywords是空白,(jobs.skills LIKE '%%')将匹配所有jobs.skills

+0

谢谢波西米亚 – 2012-02-29 09:12:01