0

データベースを検索するための複数の基準(IDまたは名前または日付または...)を持つ検索jspがあります。すべての条件を満たすには、単一のselectクエリが必要です。選択クエリを部分的に記述しましたが、うまく機能していません。クエリを完了するのを手伝ってください

   select * from table 1
   where Id in ( select id from table 1 where ( those three conditions here)

   i have (1=? or id=?)
         and (1=? or name=?)
         and (1=? or date =?)

ただし、テーブル全体を返します。私はこれらの3つの条件が真を返すことを知っています。結果を得るためにそれを変更する方法。私は初心者なので、ストアドプロシージャは必要ありません

4

3 に答える 3

1

条件がすべての行に当てはまる場合は、完全なテーブルを取得します。

たとえば、変数が1、の場合は1 = 1trueになり、すべての行が返されます。


p、s、なぜあなたがselectをネストしたのかわかりません。

于 2012-11-22T04:10:53.360 に答える
0
select * from table 1
   where Id in ( select 
         (case 
               when (1=? or id=?) and (1=? or name=? )  and (1=? or date =?) then id
          end) as id from table 1 )

これがあなたが探しているものであることを願っています

于 2012-11-22T04:41:33.530 に答える
0

冗長なサブクエリがあります。

1最初のパラメーターは、2番目のパラメーターがnullの場合、および2番目のパラメーターがnullでない場合になると想定して0います。同様に、3番目のパラメータ1は4番目のパラメータがnullの場合、4番目のパラメータがnullで0ない場合などになりますか?

これを試して:

select * from table
where (1=? or id=?)
     and (1=? or name=?)
     and (1=? or date =?)

たとえば、ユーザーが名前で検索している場合、パラメーターはのようなものになると思い(1,NULL,0,'SMITH',1,NULL)ます。

1(また、テーブルエイリアスには使用できません。)

于 2012-11-22T04:51:26.923 に答える