- - PR -
検索条件設定後のSQL Select文発行に関して
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-11-06 18:16
いつもお世話になっております。
現在、ASP(ASP.Netではありません)にてWebアプリの修正をしておりますが、 ある画面上に、検索条件としての項目で、テキストボックスやチェックボックス などを配置しており、これらを元に、Select文にて結果を表示させたいと思って います。(DBはoracleです。) 例えば、画面上に、テキストボックスが一つ、チェックボックスが2つある 場合で、テキストボックスに'TEST'、チェックボックス両方共にチェックがされて いる場合、 Select aaa,bbb,ccc from table where textbox = 'TEST' and check1 = '1' and check2 = '1' というようなSQLで検索したいと思います。 こういった場合、やはり、検索項目のすべてのケースにてWHERE以下を設定しなければ ならないのでしょうか?(当たり前のような質問で申し訳ないのですが・・・) where以下がtextbox = 'TEST' and check1 is null and check2 = '1'の場合などなど。 検索項目が少ない場合は、特に問題ないと思うんですが、多い場合などを考えて 何かスマートな方法を知っている方おられましたら、アドバイスお願いします。 | ||||||||
|
投稿日時: 2006-11-06 19:35
すみません、ちょっと意味がわからなかったです。 検索条件が設定されていないものは、WHERE に何も書かなければ良いだけなのではないでしょうか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-11-06 19:48
where以下を設定するかどうかは、どのようなSQL文を期待しているかで変わってくるのではないでしょうか?
私もこのような処理を書いたことがありますが、その場合はテキストボックスに何も文字列がない場合は、Where句にはセットしないようにしたりしました。(このときはTextBoxに何もかかれていない場合はWhere句にセットする必要がないSELECT文で問題なかったからです。場合によっては必要なこともあるでしょう) if ( textBox1.text.Length > 0 ) strWhere += "textBox='" + textBox1.Text + "'"; みたいな感じです。 _________________ -------------------------------------------- HIRO's.NET PowerShell,VB.NET,C#のTipsを掲載しています HIRO's.NET Blog PowerShell,VB.NET,C#を中心とした技術ネ | ||||||||
|
投稿日時: 2006-11-06 22:16
レガシー ASP はほとんど触ったことは無いのですが、
僕は動的にSQLが変わるのがいやなので、 WHEREはすべて記述して固定で SQL + Parameter で問い合わせを作ります。 | ||||||||
|
投稿日時: 2006-11-06 22:30
かるあさん、HIROさん、じゃんぬねっとさん
ご返答ありがとうございました。 単純に私が思っていたことは、例えば、検索項目の条件として、 チェックボックスが5個くらい合った場合などを想定すると、 当然ながらチェックボックスは、チェックあり、なしの時がありますので、 これを1から5に割り振ると、 CASE1 check1あり、check2以降は無し・・・ where check1 = '1' case2 check1あり、check2あり、check3以降は無し・・・ where check1 = '1' AND CHECK2 = '1' CASE3 CHECK1あり、CHECK2なし、CHECK3あり、CHECK4以降は無し WHERE CHECK1 = '1' AND CHECK3 = '1' AND CHECK4 = '1' という風に、すべての場合分けをwHERE句に羅列していくのかなって 思いまして・・・。 かるあさん、 レガシー ASP はほとんど触ったことは無いのですが、 僕は動的にSQLが変わるのがいやなので、 WHEREはすべて記述して固定で SQL + Parameter で問い合わせを作ります。 →具体的に教えて頂けますか? | ||||||||
|
投稿日時: 2006-11-06 22:38
以前このスレッドを見てからこの記述になることが多いです。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=32164&forum=7 とりあえず一番長いところで、
#編集 うぁ、顔文字になってる。。。orz _________________ かるあ のメモ http://karua.at.webry.info/ [ メッセージ編集済み 編集者: かるあ 編集日時 2006-11-06 22:39 ] | ||||||||
|
投稿日時: 2006-11-06 23:08
oracleならallを使うが吉 | ||||||||
|
投稿日時: 2006-11-07 11:37
ご返答頂きました皆様、
色々とアドバイス有難うございました。 とりあえず、項目分のIFを用意して、最後に余計な'and'を取り除いて 対応することにしました。 具体的には、 If xxx1 <> "" then strWhere = "xxx1 = '0' and" End If If xxx2 <> "" Then strWhere = strWhere & "xxx2 = '1' and" End If このように項目分用意して、最後のandが付くのでこれを取り除いた次第です。 しかし、色々なやり方も教えていただき大変勉強になりました。 ありがとうございました。 |
1