dポイントプレゼントキャンペーン実施中!

はじめて参加します。
SQL初心者の古屋と申します。

絞り込み検索をしたいのですが、先に進まず困っています。
どうぞアドバイスをよろしくお願いします。

あるテーブルから1回目の検索条件でヒットしたものを表示させる。
次に、その中から2回目の検索条件を入力して、結果を表示させる。

(ポイントは、一度検索した結果を出してから、次の検索条件を入力させたい)

この絞り込みを何回でもやりたいのです。

一時テーブルも試したのですが、検索する回数分一時テーブルが必要になるのではだめだと思い、
断念しました。

テーブル値関数を使ったら良さそうだと思ったのですが、能力不足のため先に進まず困っています。

どうかアドバイスをよろしくお願いします。

環境は、Windows 2000 Serverで、SQL Server 2000を使用しています。

A 回答 (4件)

No.2の返答についてのコメントです。



>本当にド素人の質問で申し訳ないのですが、一般的なWebの絞り込み検索って、
>(絞り込み検索に限らず、検索について)
>SQLでストアドプロシージャとかを作って実行させるのではなく、Webで表示
>させるほうのアプリケーションで 書くものなのでしょうか?

作りたいのはWebアプリケーションですか。
ということは、SQLの検索結果をWebに表示する仕組みが必要ですので、
やはり別の言語(ASPとかPHPとかJava)が必要でしょう。

検索結果をWebに出力して、その結果をユーザがまた検索できるようにする
プログラムを別言語で開発することになるのでしょうか。
    • good
    • 0
この回答へのお礼

cse_riさん、回答ありがとうございます。

WEBアプリケーションの方で、AND検索を使うことによって、絞り込み検索は実現したようです。

私のイメージでは、SQLの方でストアドプロシージャなどを使って検索を実行させ、受け取った結果をWEBで表示させるものだと思っていたのですが、
WEBアプリケーションの方で、検索させる方が一般的なのですね。

>やはり別の言語(ASPとかPHPとかJava)が必要でしょう。

そういう知識がないと、SQLだけ勉強していてもあまり使えないということなのでしょうか。
へこんできたけど、頑張ります。

SQLのメーリングリストにも投げていたのですが、ここまで答えて下さる方はいませんでした。
丁寧で、とても親切な回答をありがとうございました。

お礼日時:2001/08/23 09:08

対話式に検索するのであれば、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なので、基本的に列の名前なんかは合わせておく
必要があります。
 
ご参考までに。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。

>対話式に検索するのであれば、cse_riさんのおっ
>しゃる通り、SQLというより4GLなどのツールで
>解決する問題だと思います。

4GLについて調べてみたいと思います。
親テーブルとか子テーブルとかはなく、1つのテーブルから検索をかけたいと思っています。

1回目
select *
from emp
where empno=123
これを表示させる

2回目
select *
from emp
where empno=123 and name='John'
これを表示させる

どんどんANDでつなげていけばいいのでしょうが、
前回の検索条件を記憶させておいて、次の検索に受け渡すには、どのようにしたらいいのでしょうか。
変数を使うのでしょうか。

お礼日時:2001/08/22 08:58

追加のコメントです。



>あるテーブルから1回目の検索条件でヒットしたものを表示させる。
>次に、その中から2回目の検索条件を入力して、結果を表示させる。

結果を1回表示したいということですか。
SQLの副問い合わせでは中間の結果が表示されないからNGですね。

やはりSQL単独で実現させるより、別の言語の力が必要では
ないかと思います。(VBでもJavaでも何でもいいですが)
    • good
    • 0
この回答へのお礼

>やはりSQL単独で実現させるより、別の言語の力が必要では
>ないかと思います。(VBでもJavaでも何でもいいですが)

やっぱりそういうことになりますか。

本当にド素人の質問で申し訳ないのですが、一般的なWebの絞り込み検索って、(絞り込み検索に限らず、検索について)
SQLでストアドプロシージャとかを作って実行させるのではなく、Webで表示させるほうのアプリケーションで
書くものなのでしょうか?

言っていることが合っているのかどうかさえ怪しいのですが、教えていただけると嬉しいです。

お礼日時:2001/08/22 08:48

検索結果をベースに別の検索をしたいということですね。


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が得意)を
#組み合わせて、実現する内容ですね。
    • good
    • 0
この回答へのお礼

即レス本当にありがとうございます。

テーブル自体は1つしかないのですが、そういう場合でも副問い合せってできるのでしょうか。

補足で回答いただいているように、一回目の検索結果を一度表示させたいと考えています。

本当に知識不足で申し訳ないのですが、4GL(PowerBuilderが得意)って初めて知りました。
どういうものなのか調べてみます。

お礼日時:2001/08/22 08:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!