MSDE FunClub
Microsoft Data Engine FunClub
MSDE技術者向けメーリングリスト過去ログ[791]番
 
[TOP]>[MSDE技術者向けメーリングリスト過去ログ(791番)]>[ウィンドを閉じる]
 
SQLServer2005時代でも
開発の基本は T-SQL
上巻で T-SQL の基礎作り
 
SQLServer2005時代でも
運用の基本はバックアップ
下巻でバックアップ手法を学びましょう
PASSJ人気コンテンツで学んだ後は下巻でさらなる学習を!
 
ウィンドを閉じる
MSDE/SQLServer FAQ
MSDE / MSDE2000 
技術情報サポート
初心者向け
メーリングリスト
過去ログの表示
技術者向け
メーリングリスト
過去ログの表示
メーリングリスト
活動状況の
表示
MSDE TOP メニュー
MSDEトップメニューに移動します
 

 
データの取得方法

Date: Fri, 14 Sep 2001 17:00:08 +0900 (JST)
From: Yoshinobu Kondou <who@example.co.jp>


近藤です。

いつもお世話になっております。

以下のようなテーブルの構成でデータを絞り込み取得したいのですが、良い方法が
浮かびません。皆様からアドバイスいただけないでしょうか。
#テーブル構成は必要な部分だけの項目に絞ってあります。

CREATE TABLE Information_Tbl
(
    nImage_Id int IDENTITY (1,1) NOT NULL ,
    strImage_Name varchar (128) NOT NULL ,
)

nImage_Id が主キーです。

CREATE TABLE Data_Tbl
(
    nImage_Id int NOT NULL ,
    nData_No int NOT NULL,
    strData varchar (256) NULL
)

ALTER TABLE Data_Tbl WITH NOCHECK ADD 
    CONSTRAINT IX_Data_Tbl UNIQUE  NONCLUSTERED 
(
    nImage_Id,
    nData_No
)

ALTER TABLE Data_Tbl ADD 
    CONSTRAINT FK_Data_Tbl FOREIGN KEY 
(
    nImage_Id
) REFERENCES Information_Tbl
(
    nImage_Id
) ON DELETE CASCADE

となっています。

Data_Tbl から 例えば ( nData_No = 1 AND strData = 'aaa' ) で絞り込めば 該当する
nImage_Id が特定出来て、strImage_Name を取得する事は以下で可能かと思います。

SELECT strImage_Name 
FROM Information_Tbl, Data_Tbl
WHERE Information_Tbl.nImage_Id = Data_Tbl.nImage_Id AND
nData_No = 1 AND strData = 'aaa'

これにさらに ( nData_No = 2 AND strData = 'bbb' ) の結果も絞込みに使いたいのです。
イメージとしては

SELECT strImage_Name 
FROM Information_Tbl, Data_Tbl
WHERE Information_Tbl.nImage_Id = Data_Tbl.nImage_Id AND
((nData_No = 1 AND strData = 'aaa') AND
 (nData_No = 2 AND strData = 'bbb'))

UNION ですとそれぞれ行ったものを合わせて結果として戻ってきてくれますが、どちらにも
あてはまる結果を取得する良い方法をご教授願えませんでしょうか。

分かり難い説明ですが、

( nData_No = 1 AND strData = 'aaa' ) で見つかった結果が
AAA, BBB, CCC という結果が出て、 (nData_No = 2 AND strData = 'bbb') で
BBB, CCC, DDD という結果が出るので、 BBB, CCC が取得したいという事です。
条件は (nData_No = 3 AND strData = 'CCC') という風に増えて行きます。

一度のSELECTで受け取りたいと考えておりますが、テーブルの構成上不可能でしょうか?
宜しくお願いいたします。




[MSDE/SQLServerに関して、今、どんなことにお困りですか?]
よろしければお困りの内容を、電子メールで教えて下さい。
質問を電子メールで作成する


[ウィンドを閉じる]

[MSDE/SQLServer FAQ ]

[MSDE / MSDE2000 技術サポート情報一覧]

MSDE TOP ページに移動する

 
 
 
 
 
 
 
MSDE FunClubに関するご意見・ご要望等ございましたら、
msdefun@horikawa.ne.jp までご連絡下さい。
MSDEを始めとする各種データベースシステムの開発、コンサルタントに関するご要望等は、
msdedev@horikawa.ne.jp までご連絡下さい。