みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

SQL SERVER2005のJOINについて

はじめて投稿させていただきます。
SQL SERVER2005のJOINの仕方で困っています。
どなたか、アドバイスをお願いできないでしょうか。

テーブルA
CD NAME KBN
1 山田太郎 1
2 山田花子 1
3 山田次郎 2
4 山田五郎 1


テーブルB
CD NENGETU DAY1 DAY2 DAY3 ~ DAY31
1 200811 ◎ ◎  
1 200812 ◎
3 200810
3 200811 ◎
4 200811 ◎

欲しい結果の条件と結果は
テーブルAは、KBN = 1 のみ
テーブルBは、NENGETU = 200811
但し、テーブルBには、テーブルAに存在しないCDもあります。

CD NAME KBN DAY1 DAY2 DAY3 ~ DAY31
1 山田太郎 1 ◎ ◎  
2 山田花子 1
4 山田五郎 1  ◎
以上の結果を取得したいSQLを書きたいのですが、

Select CD,NAME,KBN,DAY1,DAY2,DAY3~,DAY31
From テーブルA
LEFT OUTER JOIN テーブルB On テーブルA.CD =
(Select テーブルB.CD From テーブルB Where テーブルB.NENGETU = 200811)
Where テーブルA.KBN = '1'
Order By テーブルA.CD

とかでやると、CDの1が複数出たりして
おかしい結果になってしまいます。
どなたか、アドバイスをお願いできないでしょうか。

投稿日時 - 2008-12-22 16:19:01

QNo.4575319

困ってます

質問者が選んだベストアンサー

普通に考えると、以下のようになりおますが、どうでしょう?

select A.CD,A.NAME,A.KUBUN,B.NENGETU,B.DAY1,B.DAY2
FROM A
left outer JOIN
(SELECT B.CD,B.NENGETU,B.DAY1,B.DAY2 FROM B WHERE B.NENGETU = 200811) AS B
ON A.CD = B.CD
WHERE A.KUBUN = 1

投稿日時 - 2008-12-22 16:48:45

お礼

です。だす。
期待通りの結果が出てきました。
ありがとうございました。

投稿日時 - 2008-12-22 17:22:37

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問