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

解決済みの質問

SQL ServerのINNER JOINについて

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:岩手県~などの値が格納)

投稿日時 - 2012-06-22 11:19:17

QNo.7547996

困ってます

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

こんな感じでしょうか?
この場合は、内部ではなく外部結合にして都道府県テーブルを
別名で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

投稿日時 - 2012-06-22 12:13:17

お礼

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

投稿日時 - 2012-06-22 13:25:51

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

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

回答(1)

あなたにオススメの質問