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 技術サポート情報一覧]
|