1

2つ以上のドロップダウンリストを使用して、JSPページに表示される結果をフィルタリングしています。AND現在、データベースクエリにのみを使用しています。たとえば、2つのddlがあります。次に、私のクエリでは、次のようになります。

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

ここALLで、すべてのddlにオプションとして追加して、ALL1つのddlでオプションを選択すると、クエリが次のようになるようにします。

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

1つのクエリのみを使用してこれを実装するにはどうすればよいですか?

4

2 に答える 2

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 に答える
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 に答える