![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
はじめて参加します。
SQL初心者の古屋と申します。
絞り込み検索をしたいのですが、先に進まず困っています。
どうぞアドバイスをよろしくお願いします。
あるテーブルから1回目の検索条件でヒットしたものを表示させる。
次に、その中から2回目の検索条件を入力して、結果を表示させる。
(ポイントは、一度検索した結果を出してから、次の検索条件を入力させたい)
この絞り込みを何回でもやりたいのです。
一時テーブルも試したのですが、検索する回数分一時テーブルが必要になるのではだめだと思い、
断念しました。
テーブル値関数を使ったら良さそうだと思ったのですが、能力不足のため先に進まず困っています。
どうかアドバイスをよろしくお願いします。
環境は、Windows 2000 Serverで、SQL Server 2000を使用しています。
No.4ベストアンサー
- 回答日時:
No.2の返答についてのコメントです。
>本当にド素人の質問で申し訳ないのですが、一般的なWebの絞り込み検索って、
>(絞り込み検索に限らず、検索について)
>SQLでストアドプロシージャとかを作って実行させるのではなく、Webで表示
>させるほうのアプリケーションで 書くものなのでしょうか?
作りたいのはWebアプリケーションですか。
ということは、SQLの検索結果をWebに表示する仕組みが必要ですので、
やはり別の言語(ASPとかPHPとかJava)が必要でしょう。
検索結果をWebに出力して、その結果をユーザがまた検索できるようにする
プログラムを別言語で開発することになるのでしょうか。
cse_riさん、回答ありがとうございます。
WEBアプリケーションの方で、AND検索を使うことによって、絞り込み検索は実現したようです。
私のイメージでは、SQLの方でストアドプロシージャなどを使って検索を実行させ、受け取った結果をWEBで表示させるものだと思っていたのですが、
WEBアプリケーションの方で、検索させる方が一般的なのですね。
>やはり別の言語(ASPとかPHPとかJava)が必要でしょう。
そういう知識がないと、SQLだけ勉強していてもあまり使えないということなのでしょうか。
へこんできたけど、頑張ります。
SQLのメーリングリストにも投げていたのですが、ここまで答えて下さる方はいませんでした。
丁寧で、とても親切な回答をありがとうございました。
No.3
- 回答日時:
対話式に検索するのであれば、cse_riさんのおっ
しゃる通り、SQLというより4GLなどのツールで
解決する問題だと思います。
本題からは外れるかもしれませんが、もしSQLで
やろうとすれば、下記のようなクエリーで1回目の
検索結果と、2回目の検索結果を同時に出力する事
はできます。
|select deptno, '---' "empno", '---' "ename"
| from dept where deptno=10
|union
|select deptno, empno, ename
| from emp
| where deptno in (select deptno from dept where deptno=10);
|order by deptno,empno,ename;
ちなみに上記はOracle-SQLですが、SQL-Serverでも
UNIONは使えるでしょう。
かなり邪道ですかね(笑)
ポイントは、UNION。
1つめのクエリーでは、親の問い合わせのみを記述し、
2つめのクエリーでは、親の問い合わせを副問い合わせに
もつ問い合わせを書く、という点です。
UNIONなので、基本的に列の名前なんかは合わせておく
必要があります。
ご参考までに。
アドバイスありがとうございます。
>対話式に検索するのであれば、cse_riさんのおっ
>しゃる通り、SQLというより4GLなどのツールで
>解決する問題だと思います。
4GLについて調べてみたいと思います。
親テーブルとか子テーブルとかはなく、1つのテーブルから検索をかけたいと思っています。
1回目
select *
from emp
where empno=123
これを表示させる
2回目
select *
from emp
where empno=123 and name='John'
これを表示させる
どんどんANDでつなげていけばいいのでしょうが、
前回の検索条件を記憶させておいて、次の検索に受け渡すには、どのようにしたらいいのでしょうか。
変数を使うのでしょうか。
No.2
- 回答日時:
追加のコメントです。
>あるテーブルから1回目の検索条件でヒットしたものを表示させる。
>次に、その中から2回目の検索条件を入力して、結果を表示させる。
結果を1回表示したいということですか。
SQLの副問い合わせでは中間の結果が表示されないからNGですね。
やはりSQL単独で実現させるより、別の言語の力が必要では
ないかと思います。(VBでもJavaでも何でもいいですが)
>やはりSQL単独で実現させるより、別の言語の力が必要では
>ないかと思います。(VBでもJavaでも何でもいいですが)
やっぱりそういうことになりますか。
本当にド素人の質問で申し訳ないのですが、一般的なWebの絞り込み検索って、(絞り込み検索に限らず、検索について)
SQLでストアドプロシージャとかを作って実行させるのではなく、Webで表示させるほうのアプリケーションで
書くものなのでしょうか?
言っていることが合っているのかどうかさえ怪しいのですが、教えていただけると嬉しいです。
No.1
- 回答日時:
検索結果をベースに別の検索をしたいということですね。
SQLの副問い合わせを活用すればできそうです。
例えば、
|select deptno, empno, ename
| from emp
| where deptno in (select deptno from dept where deptno=10);
というSQL文は、カッコ内の検索結果を元にして、元のSQL文の検索条件を
設定しています。
上記のSQL文はOracleで試しましたが、基本的な構文ですので
MS-SQLServerでも実行可能かと思います。変更が入るにしても
大きくは変わらないと思います。
#PS
#私だったら、SQL Onlyではなく4GL(PowerBuilderが得意)を
#組み合わせて、実現する内容ですね。
即レス本当にありがとうございます。
テーブル自体は1つしかないのですが、そういう場合でも副問い合せってできるのでしょうか。
補足で回答いただいているように、一回目の検索結果を一度表示させたいと考えています。
本当に知識不足で申し訳ないのですが、4GL(PowerBuilderが得意)って初めて知りました。
どういうものなのか調べてみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Access(アクセス) Accessでセレクタをダブルクリックで別フォームで詳細表示 3 2022/12/20 10:36
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Access(アクセス) Access 複数条件検索の設定が上手く行きません 1 2022/07/22 20:37
- Yahoo!メール yahooメールの検索結果を全て表示するには? 1 2023/05/16 14:34
- JavaScript html javascriptにてWeb SQLを操作したい。 2 2022/12/16 17:43
- Visual Basic(VBA) Excel VBAのリストボックスの値を他のフォームに反映させる方法を教えてください。 2 2023/07/14 14:06
- Chrome(クローム) Chromeのアドレスバーに履歴等を表示させないようにしたい 2 2022/09/08 14:20
- X(旧Twitter) Twitter検索から除外 1 2023/08/18 11:00
- SEO 検索エンジン反映遅い 1 2022/06/04 07:35
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
select insertで複数テーブルか...
-
SELECTの結果で同一行を複数回...
-
select句副問い合わせ 値の個...
-
unionの結果は集計はできないで...
-
MERGE文を単体テーブルに対して...
-
SQL GROUPで件数の一番多いレコ...
-
unionでマージした副問合せを結合
-
oracleの分割delete
-
COUNTの取得方法(?)について...
-
結合と副問い合わせの違い
-
副問い合わせのinsert文
-
外部結合とor条件混在の記述方法
-
固定値を含む結合と複数テーブ...
-
構成比を求めるSQL文につきまして
-
集計後の数値が倍になる
-
複数テーブルのMAX値の行データ...
-
Oracleでの文字列連結サイズの上限
-
Accessで別テーブルの値をフォ...
-
SELECTで1件のみ取得するには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
select句副問い合わせ 値の個...
-
select insertで複数テーブルか...
-
SELECTの結果で同一行を複数回...
-
MERGE文を単体テーブルに対して...
-
他のテーブルを参照した値はupd...
-
SET句内で複数の条件を指定して...
-
固定値を含む結合と複数テーブ...
-
SQL GROUPで件数の一番多いレコ...
-
oracleの分割delete
-
外部結合とor条件混在の記述方法
-
unionの結果は集計はできないで...
-
複数テーブルのMAX値の行データ...
-
unionでマージした副問合せを結合
-
集計後の数値が倍になる
-
構成比を求めるSQL文につきまして
-
COUNTの取得方法(?)について...
-
SQLの書き方(チェックボックス)
-
結合と副問い合わせの違い
-
DELETE 文とEXISTSの使い方につ...
おすすめ情報