2012-02-29 113 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