2013-03-08 59 views
1

我正在使用兩個或多個下拉列表來篩選顯示在我的JSP頁面中的結果。現在我只使用AND進行數據庫查詢。例如,我有2個ddl。然後在我查詢,我有:爲快速搜索記錄添加篩選功能

Select * from table 
WHERE cityId = ? AND 
categId = ? 

現在我想添加ALL在我所有DDL的選項,這樣,當我選擇一個DDL的ALL選項,查詢將是這樣的:

Select * from table 
WHERE cityId IS NOT NULL AND 
categId = ? 

如何僅使用一個查詢來實現此操作?

回答

0

你必須根據數值來準備你的查詢中使用whereString。

String dropDown1 = request.getParameter("dropDown1"); 
     String dropDown2 = request.getParameter("dropDown2"); 
     StringBuilder builder = new StringBuilder("Select * from table where "); 
     if(dropDown1 !=null){ 
      if(dropDown1.equalsIgnoreCase("ALL")){ 
       builder.append("cityId IS NOT NULL"); 
      }else{ 
       builder.append("cityId="+dropDown1); 
      } 
     } 

     if(dropDown2 !=null){ 
      if(dropDown2.equalsIgnoreCase("ALL")){ 
       builder.append("and categId IS NOT NULL"); 
      }else{ 
       builder.append("and categId="+dropDown2); 
      } 
     } 
     String finalQuery = builder.toString(); 
+0

我試着你的代碼,但它給我一個錯誤的語法錯誤 – PeterS 2013-03-08 06:26:43

0

嘗試在下拉選擇的基礎上爲條件設置一個連接字符串。

例如(只是邏輯)

whereString = '1'; 

if POST contain drop1 
    whereString += ' AND CONDITION'; 


if POST contain drop2 
    whereString += ' AND CONDITION'; 

現在在SQL