ここから本文です

SQLでの副問い合わせ(サブクエリ)の記述方法について

amarubebeppuさん

2011/6/1817:23:04

SQLでの副問い合わせ(サブクエリ)の記述方法について

以下に TABLE1とTABLE2、2つのテーブルがあるとします。
後述の①から⑥の条件で導きだすクエリを教えて下さい。

SQLServer2005です。
SQL Server Management Studioでクエリを書きたいのです。

==========================
TABLE1
№ KEY1 KEY2 項目1
1 1 1 A
2 1 2 A
3 2 1 B
4 2 2 C

TABLE2
№ KEY1 KEY2 項目A 項目B
10 1 1 AA YY
11 1 1 BB YY
12 1 1 CC ZZ
20 1 2 CC XX
30 2 1 AA YY
31 2 1 DD XX
40 2 2 AA ZZ
41 2 2 BB ZZ

================================

①TABLE1で項目1の値がAまたはBであるレコードは、№1、2、3です。

②次に①レコードのキー(KEY1、KEY2)と同じ値となるTABLE2のレコードのうち、
項目AがAAまたはBBのレコードは№10、11、30です。

③ここで②の条件を満たす同じ値のキーを持つTABEL1のレコードは№1、3です。

④さらに①レコードのキー(KEY1、KEY2)と同じ値となるTABLE2のレコードのうち、
項目BがCCのレコードは№12です。

⑤さらにここで④の条件を満たす同じ値のキーを持つTABEL1のレコードは№1です。

⑥結果、③と⑤の条件を満たすTABLE1のレコードは№1です。

以上ややこしい条件ですがよろしくお願いします。

要するにTABLE1で、ある条件に一致するレコードのうち、
同じキーをもつTABLE2のレコードで、項目Aの条件を満たすレコードと、
項目Bの条件を満たすレコードを
両方もつTABLE1のレコードを導きたいのです。

閲覧数:
461
回答数:
1

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

nora1962jpさん

2011/6/1900:02:57

> ④さらに①レコードのキー(KEY1、KEY2)と同じ値となるTABLE2のレコードのうち、
> 項目BがCCのレコードは№12です。

ここ違うのでは。
TABLE2のNoが12の項目Bは'ZZ'です。

例えばこんなのはどうですか。
select [table1].*, [table2].* from [table1] inner join [table2]
on [table1].[項目1] in ( 'A','B' )
and [table2].[項目B] = 'ZZ'
and [table1].[key1] = [table2].[key1]
and [table1].[key2] = [table2].[key2]
and [table2].[項目A] = 'CC'

質問した人からのコメント

2011/6/21 07:45:12

ありがとうございます。早速試してみます。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

5文字以上入力してください

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。