【问题标题】:Adding filtering functionalities for records for quick search为记录添加过滤功能以便快速搜索
【发布时间】:2013-02-23 14:34:21
【问题描述】:

我正在使用两个或更多下拉列表来过滤我的 JSP 页面中显示的结果。现在我只使用AND 进行数据库查询。例如,我有 2 个 ddl。然后在我的查询中,我有:

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

现在我想在我的所有 ddl 中添加 ALL 作为选项,这样当我在一个 ddl 中选择 ALL 选项时,查询将类似于:

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

如何只使用一个查询来实现这一点?

【问题讨论】:

    标签: java mysql jsp jakarta-ee servlets


    【解决方案1】:

    您必须根据即将到来的值准备查询。

    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();
    

    【讨论】:

    • 我正在尝试你的代码,但它给了我一个错误语法的错误
    【解决方案2】:

    尝试在下拉选择的基础上为where条件做一个连接字符串。

    例如(只是逻辑)

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

    现在在 sql 中使用 whereString

    【讨论】:

      猜你喜欢
      • 2018-04-14
      • 2023-01-05
      • 2015-09-08
      • 1970-01-01
      • 2019-11-03
      • 1970-01-01
      • 2012-05-05
      • 2019-12-21
      • 1970-01-01
      相关资源
      最近更新 更多