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

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

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

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

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

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

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

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

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

このQ&Aに関連する最新のQ&A

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に関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcelとPowerPointをVBAで連携させる方法

おけましておめでとうございます。
本年もよろしくお願いします。
で、本題ですが、
(Win95でExcel2000とPowerPoint2000を使用)
EXCELのデータベースの表を順々にPowerPointのテキストボックスへ
コピーして印刷するためにVBAを作成したいと思ってます。
(印刷形式がPowerPointのため)
ここには作成できるんですが、両者のVBAをどのように
連携させるかわかりません。
よろしくご教授ください。

また、PowerPointのVBAでマクロの記録を使わず、オブジェクト名
(("Text Box 1")とか)を知る方法もあわせてよろしくご教授ください。

Aベストアンサー

>オブジェクト名はVBAを使わずにパワーポイント上だけでは確認しようが無いと言うことでしょうか。

絶対できないとまでは断言できる自信はないのですが、少なくともその方法は知りません。

オブジェクト名はVBAを使えば変更することはできます。
Application.ActiveWindow.Selection.SlideRange.Shapes.Item(1).Name = "New Name 1"

だだ、この設定した名称が勝手に変更されることはないのかどうか自信がありません。少なくとも自動的に生成した「オブジェクト名」は勝手に変更されてしまいます。

Qsql serverのテーブルレイアウトの印刷

現在、D/Bの設計を行っています。
sql server(7.0)でフイールド等の設定をしています。
その結果のテーブルレイアウトの印刷は、出来るのでしょうか。

また、文字型(chr、varchar、ncharなど)を設定する時、何を使用してよいのか分かりません教えて下さい。

Aベストアンサー

テーブルレイアウトの設定を見るには「クエリアナライザー」を使用します。
そして、コマンドに「sp_help *****」と打ち込んで実行します。(*****はテーブル名)
するとテーブルのフィールド情報からインデックス情報、ユーザー情報まで見る事ができます。その結果を印刷すれば大丈夫です。

QMicrosoftのAccessとPowerPointって何ですか?

以前、OFFICE XPを購入してインストールしたのですが、
AccessとPowerPointというのがありますよね。
この2つは何にどう使うのでしょうか?

説明なども読んでみましたし、Microsoftの
サイトも見てみましたが、「で、結局どんな用途があるの?」と
悩んでしまって理解できません。
特にAccessはExcelとどう違うのか全くわかりません。
(データベースがうんぬんと書かれてありますが、“データベース”の
意味もよくわかっていないのです)

どうせあるなら、色々使ってみたいと思うのですが
果たしてどのように使うのか…面白そうなら一から
勉強してみたいのです。

Wordはワープロ・Excelは表計算・Outlookはメールとスケジュール管理、
ぐらいの理解度しかない、ど素人の私にわかりやすく
教えていただけないでしょうか?
宜しくお願い致します。

Aベストアンサー

私は会社員ですが、AccessとPowerPointは会社で良く使っています。

Access:
会社では、大量なデータを効率良く管理したり分析したりするのに使用しています。(在庫管理とか)
色々なデータを関連付けて検索したり集計したりできるのですが、大量データでないと(何百件とか)、Accessとしての有難味は薄いでしょう。
私も家で住所録とかに使ってみましたが、結局、Excelとか住所管理ソフトになってしまいました。

PowerPoint:
会社では会議や発表の時、資料をPowerPointで作りパソコンに接続したプロジェクタからスクリーンに映し出しています。
ちょっと前までは、ワープロで資料を作りOHPにしていましたが、PowerPointを使うようになってからは、手直しは楽だし、カラーは簡単に使えるし、アニメーションの様な理解してもらうのに大変有効な手段も使えるようになり、重宝しています。
家では使っていませんが。

QSQL Serverのテーブル移設方法

SQL Server超初心者です。
開発環境でテーブルを追加作成し、ユーザー側へもって行きたいのですが、簡単にテーブルを移行する手段ってありますか?
今までは1つや2つならユーザー先でテーブルを新規に作成して、CSVファイルで持っていったデータをインポートしていたのですが、今回大量に持っていくことになってしまい、何か簡単な方法はないか探しています。
開発環境とユーザー環境は別の場所でネットワークにつながっていない状態なので、簡単なメディアで持っていかなければなりません。
もしかしたらツールなどを使って簡単にできることなのかもしれませんが、基本的なことからわかっていないので詳しく教えていただければと思います。
よろしくお願いします。

Aベストアンサー

スクリプトにして持って行ったらいいです。

例.ローカルの「TEST」データベースをスクリプトに出力する方法

※1.SQL Server Enterprise Manager 起動

※2.ローカル(local)の「TEST」データベースまでたどりつく

※3.[ツール]→[SQLスクリプト生成]を選択

※4.ダイアログ内部の全て表示ボタンを押し、チェックボックスなどを駆使しながら、出力対象を選択

※5.ダイアログ内のオプションタブを選択し、「主キー、外部キー、デフォルトと・・・」にチェックを入れる。(そうしないと、プライマリーキーなどの情報が飛んでしまう)

※6.OKボタンを押し、出力先を指定する。



例.取り込む方法

SQLクエリアナライザで、作成されたスクリプトを実行するだけ

Qバージョン違いのPowerPointテンプレート

PowerPoint2010で制作したスライドをPowerPoint2003で開きたいと思っています。

現状:
・それぞれのPowerPointは違うパソコンに入っています。
・製作したスライドのデザインにはPowerPoint2010のテンプレートを使用しています。
・MicroSoftよりバージョンの互換性の問題を解決するソフトが配布されてはいますが、そのソフトを使用できない環境にあります。

そこで質問があります。
MicroSoftから配布されているソフトをインストールすることなくPowerPoint2010で制作した、しかもそのテンプレートを使用したスライドをPowerPoint2003で開くにはどうすればよいでしょうか?
テンプレートファイルをスライドとともにPowerPoint2003が入っているPCにコピーして、PowerPoint2003でそのテンプレートを取り入れればよいのでしょうか?

Aベストアンサー

PowerPoint 2010の名前を付けて保存で、ファイルの種類を PowerPoint 97-2003 テンプレートで保存したものを、PowerPoint 2003が入っている他のパソコンのテンプレートフォルダに追加コピーしてはどうでしょうか。

QPL/SQLでUPDATE別テーブル条件を付加する

PL/SQLでUPDATEする際、別のテーブルからの条件も付加し更新を行いたいのですが、可能でしょうか?
教えて下さい。
どうぞよろしくお願い致します。

テーブル名T_NAMEのSEI='1'の時以下のロジック処理を行いたいのです。

UPDATE T_ADRS
SET DLT_FLG = '1'
, USER_ID = inUSER_ID
, TNMT_ID = inCOMP_ID
, UPD_DT = SYSDATE
WHERE RTRIM(ADR_CD) = RTRIM(strADR_CD)
AND RTRIM(DATA_SY) = RTRIM(strDATA_SY)
AND RTRIM(IMP_NO ) = RTRIM(strIMP_NO );

Aベストアンサー

こんばんわ
ちょっと自信がないのですが・・・

質問の内容は、
1)必ずT_NAMEとリンクさせて、T_NAMEのSEIが'1'のデータのみ更新対象とする
2)T_NAMEに存在しないデータも更新対象とするが、T_NAMEのSEIが'1'のデータは
特別に更新項目が追加される
のどちら(又は、どちらでもない?)でしょうか?

まず1)の場合ですが、
UPDATE T_ADRS TBL_A
SET DLT_FLG = '1'
WHERE ...(中略)...
AND EXISTS(
 SELECT 1 FROM T_NAME TBL_N
 WHERE TBL_A.ID = TBL_N.ID
 AND TBL_N.SEI = '1'
 AND ROWNUM = 1)
とすれば実現できるかと。
EXISTSと言うのは「存在する」と言う意味で、
EXISTSに続く括弧内のSELECT文に対応するデータが存在するかどうかを判定してくれます。
で、実際のSELECT文の内容ですが、更新対象のテーブル「T_ADRS」と
条件判断様のテーブル「T_NAME」をリンクさせて、条件文を記述しています。
このSELECT文に該当するデータが存在する場合はEXISTSがTRUEになりますので、
更新対象となり、該当するデータが存在しない場合は更新対象になりません。

次に2)の方ですが、
UPDATE T_ADRS TBL_A
SET DLT_FLG = (
 SELECT DECODE( TBL_N.ID, '1', '1', TBL_A.DLT_FLG)
 FROM T_NAME TBL_N
 WHERE TBL_A.ID = TBL_N.ID(+)
 AND ROWNUM = 1 )
WHERE ...(後略)
で大丈夫だったと思います・・・
これは、SELECT文の内容をDLT_FLGにSETする・・・と言うSQLですが、
SELECTの内容はT_NAMEを外部結合しています。
これによって、T_NAMEが存在しない場合はそのままT_ADRSのDLT_FLGを使い、
存在しかつSETが'1'の場合は'1'で更新します。
※存在するがSEIが'1'では無い場合はDLT_FLGが使われます。

余り良いSQLでは無いかも知れませんが、
取りあえず思いついたのはこれくらいです。

長々と書いてしまいましたが、
的外れの回答だったら、すんません

こんばんわ
ちょっと自信がないのですが・・・

質問の内容は、
1)必ずT_NAMEとリンクさせて、T_NAMEのSEIが'1'のデータのみ更新対象とする
2)T_NAMEに存在しないデータも更新対象とするが、T_NAMEのSEIが'1'のデータは
特別に更新項目が追加される
のどちら(又は、どちらでもない?)でしょうか?

まず1)の場合ですが、
UPDATE T_ADRS TBL_A
SET DLT_FLG = '1'
WHERE ...(中略)...
AND EXISTS(
 SELECT 1 FROM T_NAME TBL_N
 WHERE TBL_A.ID = TBL_N.ID
 AND TBL_N.SEI = '1'
 AND ...続きを読む

QPowerPointについて

プレゼンand研修会でMS PowerPointを使用することになりました。研修発表は友人と行います。
資料は、私はPowerPoint2003、友人はPowerPoint2000を用いています。そこで1台のPCにPoworPoint2003とPowerPoint200を入れ、そのPCで2人の研修発表を行おうとしたのですが、全てPowerPoint2003で起動されます。その為か友人の資料が、若干のズレが発生しました。1台のPCで片方をPowerPoint2003、もう片方をPowerPoint2000で起動させる方法は何かありますでしょうか?ご教授願います。

Aベストアンサー

1)PowerPoint2000を起動してからファイルメニューで開く
2)マイコンピュータなどでファイル名で右クリックして「プログラムから開く」を選び、「プログラムの選択」をクリックし、アプリケーションの格納されているフォルダを参照してプログラムを選ぶ

Q検索結果をテーブルに表示

Windows2000でアクセス2000を使用してます。
フォームから検索した結果をテーブルで表示って出来るのでしょうか?
もし、出来るのならどのようにして設定したら良いのでしょうか?
アクセス初心者です。宜しくお願いします。

Aベストアンサー

通常は車種データのキーかインデックスが付いているフィールドを抽出条件にするのが一般的です。
しかし各種要求に応じるためにはフォームフィルターを使った抽出の方がなれない人には扱いやすいと思います。抽出フォームにフォームフィルターを使って抽出条件を入力させて抽出する。見栄えはイマイチかも知れませんが表形式の抽出フォームに車種データを表示させる単票形式のフォームを開くボタンを付けておけばOKではないでしょうか。

QPowerPointがPCに入ってない!!

こんにちは

早速ですけど,私のPCにはPowerPointが入ってないですo
他のMicrosoftのWordやExcelは元から入ってたのですが
何故かPowerPointだけ入ってなかったのですo

私は今学生でプレゼンテーションなどをする為PowerPointが必要なんですo
なのでMicrosoftのホームページに行ったのですが,
ダウンロードの所を見てもテンプレートやViewerだったりして,編集ができるのを
見つけられませんでしたo
PowerPoint自体をダウンロードするのにはやはりお金がかかるのでしょうか?

作ったPowerPointを先生に提出したりするので,
MicrosoftPowerPoint以外のプレゼンテーション用の機能のは駄目なんですo

古いバージョンでも何でも良いんでPowerPointを編集できるのを
無料でダウンロードできないですかね?

自分のPCにPowerPointが入ってないって本当に驚きましたo
提出期限前になんとかなって欲しいです....o

Aベストアンサー

補足します。OpenOfficeを挙げている
人が私を含め何人かいて互換性が
あるといっていますが、実際は
出力は.pptにしてPowerPointで
みても形が崩れたりします。
なので完全互換ではないです。

ちなみに、書き込む内容が単純な絵ほど
互換率は高いです。

OpenOfficeで作っておいて
学校のPowerPointで微調整するのが
よろしいかと思います。

QSQLの条件検索について

下記のような「果物TBL」というテーブルがあるとします。

果物TBL
--------------------------------
ID    名前      値段
- - - - - - - - - - - - - - - - - - - -
01    りんご     150
02    バナナ     250
03    みかん     250
04    ぶどう     300
--------------------------------

また上記のテーブルと全く同じ構成の「果物検索TBL」というテーブルがあるとします。

そのテーブルには、例として下記のような値を入れておきます。

果物検索TBL
--------------------------------
ID    名前      値段
- - - - - - - - - - - - - - - - - - - -
NULL   りんご     250
NULL   バナナ     NULL
--------------------------------

この時、下記のようなSQLだと

SELECT DISTINCT 果物TBL.名前
FROM 果物TBL INNER JOIN 果物検索TBL ON
(果物TBL.ID = 果物検索TBL.ID AND LEN(果物検索TBL.ID) > 0) OR
(果物TBL.名前 = 果物検索TBL.名前 AND LEN(果物検索TBL.名前) > 0) OR
(果物TBL.値段 = 果物検索TBL.値段 AND LEN(果物検索TBL.値段) > 0);

--------------------------------
名前
- - - - - - - - - - - - - - - - - - - -
バナナ
みかん
りんご
--------------------------------

という結果になります。(名前:りんご・バナナと値段:250のOR検索)

その結果を

--------------------------------
名前
- - - - - - - - - - - - - - - - - - - -
バナナ
--------------------------------

という結果にするにはどうすればいいでしょうか?(名前:りんご・バナナと値段:250のAND検索、バナナのみマッチ)
単純にORをANDにしてもうまくいきませんでした。
動的にSQLを作れれば良いのですが、この構成は変えられないのでNULL値がネックになり分かりません。
教えてください。
また、記載してるSQLよりもっとスマートな書き方があれば教えてください。

下記のような「果物TBL」というテーブルがあるとします。

果物TBL
--------------------------------
ID    名前      値段
- - - - - - - - - - - - - - - - - - - -
01    りんご     150
02    バナナ     250
03    みかん     250
04    ぶどう     300
--------------------------------

また上記のテーブルと全く同じ構成の「果物検索TBL」というテーブルがあるとします。

そのテーブルには、例として下記のような値を入れておきます。

果物検索TBL
---...続きを読む

Aベストアンサー

なんどもすみません(汗)。

ANo.6 ですが、FROM を FORM とタイプミスしています。

SELECT DISTINCT 果物TBL.*
FROM 果物TBL
WHERE
(ID In (SELECT ID FROM 果物検索TBL) AND EXISTS (SELECT 1 FROM 果物検索TBL WHERE ID Is Not Null))
AND
(名前 In (SELECT 名前 FROM 果物検索TBL) AND EXISTS (SELECT 1 FROM 果物検索TBL WHERE 名前 Is Not Null))
AND
(値段 In (SELECT 値段 FROM 果物検索TBL) AND EXISTS (SELECT 1 FROM 果物検索TBL WHERE 値段 Is Not Null));


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング