SQL初心者です。
今あるテーブル(TABLE)に
| VALUE_A | VALUE_B | VALUE_C | VALUE_D |
-----------------------------------------
| 000 | AAA | AAA | AAA |
| 001 | AAA | AAA | BBB |
| 002 | AAA | BBB | AAA |
| 003 | BBB | BBB | BBB |
| 004 | BBB | BBB | NULL |
のようなデータが入っているとします。
Web上から VALUE_B VALUE_C VALUE_D に対しそれぞれテキストボックス入力フィールドから値を入力し検索を行うようにしたいのです。
[VALUE_B]=AAA
[VALUE_C]=AAA
[VALUE_D]=AAA
と入力されれば
VALUE_A:000
を検索結果として出します。
[VALUE_B]=AAA
[VALUE_D]=AAA
と入力されれば
VALUE_A:000
VALUE_A:002
を検索結果として出します。
[VALUE_B]=AAA
だけが入力された場合は
VALUE_A:001
VALUE_A:002
VALUE_A:003
を検索結果として出します。
つまり、フォームのテキストボックスに入力された条件で抽出し、入力が無い場合は全件抽出を行いたいのです。
この場合、どのようなSQLを組めばよいのかわかりません。ANDやORだけでは対応できないような気がします。Oracleを始めたばかりということもあり、どのような関数を使えばよいのかもわかりません。どなたかご教授いただけませんでしょうか??よろしくお願いします。
No.1
- 回答日時:
FORMSについての知識は全く無いのですが…
一般的なSQLを組むとすると以下の様になると思います。
SELECT VALUE_A
FROM TABLE
WHERE NVL([VALUE_B],NVL(VALUE_B,'0')) = NVL(VALUE_B,'0')
AND NVL([VALUE_C],NVL(VALUE_C,'0')) = NVL(VALUE_C,'0')
AND NVL([VALUE_D],NVL(VALUE_D,'0')) = NVL(VALUE_D,'0')
9iで試してみたら上手くいきました。
「VALUE_B,'0'」の「'0'」の部分は何でもかまいませんが、形式だけは合わせてください)
No.2ベストアンサー
- 回答日時:
No.1です。
下記の回答は、未入力の場合にNULLがセットされると仮定した場合ですが、空白がセットされる場合は以下の様になります。
SELECT VALUE_A
FROM TABLE
WHERE DECODE([VALUE_B],' ',NVL(VALUE_B,'0'),[VALUE_B]) = NVL(VALUE_B,'0')
AND DECODE([VALUE_C],' ',NVL(VALUE_C,'0'),[VALUE_C]) = NVL(VALUE_C,'0')
AND DECODE([VALUE_D],' ',NVL(VALUE_D,'0'),[VALUE_D]) = NVL(VALUE_D,'0')
早速の回答、ありがとうございます。
こちらでも動作確認が取れました。
DECODEはIFのような条件判断を多数行ってくれる、便利な関数なんですね。勉強になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA。複数のChangeイベントをまとめる方法 2 2022/03/31 12:03
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) VBAで日付入力しているのですが 4 2023/03/02 11:25
- Perl perl このテキストファイルを簡単に配列に入れるには? 2 2022/04/27 20:24
- Visual Basic(VBA) 【再投稿】VBAで動作しなくて困っています 2 2022/10/11 11:05
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Visual Basic(VBA) VBAのトグルボタンでのマクロについて質問です 3 2022/10/10 17:23
- Visual Basic(VBA) 配列の勉強をしています。使用する変数の意味、検索条件の書き方が難しいです。 2 2022/09/15 14:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データベースのINT型項目にNULL...
-
passwordが入れられません・・・・
-
アクセスで数値型のフィールド...
-
フォームで入力しても反映されない
-
ACCESS 時間の入力方法
-
このオブジェクトに値を代入す...
-
エクセル 自動入力
-
sqlldrの使用方法について
-
アクセスのテキストボックスの...
-
ACCESSのテキストボックスの連...
-
アクセス2003 入力規則
-
カレンダーフォームの日付をユ...
-
【Excel関数】カレンダーで文字...
-
入力規則違反-任意のエラーメ...
-
ひらがな、カタカナ、漢字をま...
-
Accessのパラメータクエリに入...
-
フォームテキスト内文字の縦位...
-
Accessで所要時間の足し算
-
ファイルメーカで経過月数を出...
-
ユーザーフォームで数字にカン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
passwordが入れられません・・・・
-
データベースのINT型項目にNULL...
-
アクセスで数値型のフィールド...
-
フォームで入力しても反映されない
-
Access(office)のマクロの「値...
-
Excelで入力したデータを自動的...
-
日付のテキストボックスに(例...
-
Access2007 textboxに入力でき...
-
このオブジェクトに値を代入す...
-
アクセスのテキストボックスの...
-
ファイルメーカー 一ヵ月後の...
-
ユーザーフォームで数字にカン...
-
sqlldrの使用方法について
-
ACCESS 時間の入力方法
-
入力規則違反-任意のエラーメ...
-
Access2007、フォームのテキス...
-
Accessで主キーの最終番号を取...
-
ファイルメーカで経過月数を出...
-
Accessで所要時間の足し算
-
Accessのパラメータクエリに入...
おすすめ情報