アプリ版:「スタンプのみでお礼する」機能のリリースについて

はじめて質問します。
顧客情報のテーブルにN件のメールアドレス、電話番号を保持している構造のテーブルがある場合
以下のような状態でデータを取得したい場合、どのようなSQLを書けば良いでしょうか。
電話番号・メールアドレスは、可変でN件は難しそうなので最大2件固定。

■取得対象
【顧客テーブル】
|顧客ID |顧客名
|1   |太郎
|2   |二郎

【メールアドレス】
|メールアドレス |顧客ID
|a@goo.ne.jp  |1
|b@goo.ne.jp  |1
|c@goo.ne.jp  |2
|d@goo.ne.jp  |2

【電話番号】
|電話番号   |顧客ID
|0311112222 |1
|08011112222 |1
|0399999999 |2
|09088889999 |2

■取得したい内容
|顧客ID|顧客名  |・・・|電話番号1   | 電話番号2   |メールアドレス1 |メールアドレス2
|1   |太郎   |・・・ |0311112222 |08011112222 |a@goo.ne.jp  |b@goo.ne.jp
|2   |二郎   | ・・・|0399999999 |09088889999 |c@goo.ne.jp  |d@goo.ne.jp 

■テーブル構造
【顧客テーブル】
・顧客ID(PK)
・顧客名
・生年月日
 etc

【電話番号】
・電話番号ID(PK)
・電話番号
・顧客ID(FK)
 etc
※顧客IDで顧客テーブルと紐づく

【メールアドレス】
・メールアドレスID(PK)
・メールアドレス
・顧客ID(FK)
 etc
※顧客IDで顧客テーブルと紐づく

ご回答頂ければ助かります。よろしくお願い致します。

A 回答 (1件)

たぶん



select C.顧客ID, C.顧客名
, (select 電番 from (select row_number() over (order by T.電番ID) no, T.電番 from 電番 T where T.顧客ID = C.顧客ID) where no = 1) 電番1
, (select 電番 from (select row_number() over (order by T.電番ID) no, T.電番 from 電番 T where T.顧客ID = C.顧客ID) where no = 2) 電番2
, (select メア from (select row_number() over (order by M.メアID) no, M.メア from メア M where M.顧客ID = C.顧客ID) where no = 1) メア1
, (select メア from (select row_number() over (order by M.メアID) no, M.メア from メア M where M.顧客ID = C.顧客ID) where no = 2) メア2
from 顧客 C
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
頂いたSQLを参考に組んでみましたが

T.顧客ID = C.顧客ID
の部分で「無効な識別子です。」とエラーになりました。
顧客Cテーブルがサブクエリ内からは、参照出来ない様です。

お礼日時:2015/03/18 15:45

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

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