プロが教える店舗&オフィスのセキュリティ対策術

SQL文の作成方法が分からず困っています。
以下の実現はどのように行えばよろしいでしょうか?
---------------------
テーブルA:(項目)キー番号、項目No
テーブルB:(項目)キー番号、項目No1、項目No1名称、
項目No2、項目No2名称、項目No3、項目No3名称
---------------------
とします。
ここで、テーブルA、Bでキー番号が一致し、
テーブルAの項目Noで、テーブルBの項目No1~3のどれかと
一致した場合、項目名称をテーブルBより取ってきたいです。
出力する時、項目No、項目名称は1個のみ出力したいです。
項目No1~3にない場合も名称空白でそのまま出力します。

(データ例)
テーブルA:
100,1
100,4
110,5
テーブルB:
100,1,項目名1,2,項目名2,3,項目名3
110,3,項目名3,4,項目名4,5,項目名5
結果:
100,1,項目名1
100,4,(空白)
110,5,項目名5

A 回答 (1件)

項目No1~3それぞれについてキー番号内でユニークになるように登録されているならば、


以下の方法でいいでしょう。

SELECT
a.キー番号,
a.項目No,
CASE 項目No
WHEN b.項目No1 THEN b.項目No1名称
WHEN b.項目No2 THEN b.項目No2名称
WHEN b.項目No3 THEN b.項目No3名称 END
FROM テーブルA a
LEFT OUTER JOIN テーブルB b
ON a.キー番号=b.キー番号 AND a.項目No IN (b.項目No1,b.項目No2,b.項目No3)

上記を満たさないならば、別の方法が必要です。
SELECT
a.キー番号,
a.項目No,
b.項目名称
FROM テーブルA a
LEFT OUTER JOIN
(SELECT キー番号,項目No1 項目No,項目No1名称 項目名称 FROM テーブルB
UNION
SELECT キー番号,項目No2 項目No,項目No2名称 項目名称 FROM テーブルB
UNION
SELECT キー番号,項目No3 項目No,項目No3名称 項目名称 FROM テーブルB) b
ON a.キー番号=b.キー番号 AND a.項目No=b.項目No
    • good
    • 1
この回答へのお礼

解決しました。
ありがとうございます。

お礼日時:2009/10/27 10:05

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

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

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