1

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

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

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

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

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

4

2 回答 2

0

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

例如(只是逻辑)

whereString = '1';

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


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

现在在 sql 中使用 whereString

于 2013-03-08T05:38:08.913 回答
0

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

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();
于 2013-03-08T05:47:41.093 回答