電子書籍の厳選無料作品が豊富!

SQL Server 2008 R2のINNER JOINについて質問させて下さい。

------------------------------
SELECT * FROM [Customer]
   INNER JOIN Pref
      ON Customer.CustomerPref1 = Pref.PrefId
      ON Customer.CustomerPref2 = Pref.PrefId
      ON Customer.CustomerPref3 = Pref.PrefId
WHERE ([CustomerId] = 123)
------------------------------

3つもONがあって変なSQL文となっております。
(当然SQLエラーとなります。)

やりたい事は、
顧客フォーム[Customer]の中に、都道府県をプルダウン選択する項目が3つあります。

3つとも都道府県マスタテーブルをリレーション(FK)しております。
3つの都道府県項目で「都道府県名」をそれぞれSELECTするには、
どうしたらよいでしょうか?

ご教授頂けますようお願い申し上げます。

------------------
▼DB情報
顧客情報テーブル:Customer
顧客ID:CustomerId
都道府県カラム1:CustomerPref1(1,2,3,~などの値が格納)
都道府県カラム2:CustomerPref2(1,2,3,~などの値が格納)
都道府県カラム3:CustomerPref3(1,2,3,~などの値が格納)

都道府県マスタテーブル:Pref
都道府県ID:PrefId(1, 2, 3,~などの値が格納)
都道府県名:PrefName(1:北海道, 2:青森県, 3:岩手県~などの値が格納)

A 回答 (1件)

こんな感じでしょうか?


この場合は、内部ではなく外部結合にして都道府県テーブルを
別名で3つ開けるという形になると思います。


SELECT Customer.*
   , Pref1.PrefName as PrefName1
   , Pref2.PrefName as PrefName2
   , Pref3.PrefName as PrefName3
 FROM Customer
 LEFT OUTER JOIN Pref Pref1
  ON Customer.CustomerPref1 = Pref1.PrefId
 LEFT OUTER JOIN Pref Pref2
  ON Customer.CustomerPref2 = Pref2.PrefId
 LEFT OUTER JOIN Pref Pref3
  ON Customer.CustomerPref3 = Pref3.PrefId
WHERE CustomerId = 123
    • good
    • 0
この回答へのお礼

アドバイス頂きありがとうございました。
解決できました。
また「LEFT OUTER JOIN」というのもポイントですね。

お礼日時:2012/06/22 13:25

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

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