2016-06-13 9 views
0

お客様の電子メールアドレスと電話番号に関する情報がありますが、データはさまざまなテーブルに保存され、顧客ごとに複数の行が表示されます。複数行の情報を1行に入力

私はemailIとphonenumberに参加する必要があるcustomerIdなどの私のメインテーブルを持っています。これを行うには、テーブルを接続するcommunication_idを持つ「変換」テーブルがあります。例えば

メインテーブル:

CustomerID var1 var2 ... 
123  1 7 

私はこの

CustomerID CommID 
123   780 
123   781 
123   782 
ような電子メールや携帯電話の外観を含んでいるテーブルとメインテーブルを接続するために使用する必要がある変換テーブル

メールの表はこのように見えます

commID email 
780  [email protected] 

と電話番号を持つテーブルには、私は私が私のメインテーブルに上記の3つのテーブルを結合する左の場合、私が得る理由

CustomerID var1 var2 email phone 
123   1 7  [email protected]  ? 
123   1 7  ?  88888 
123   1 7  ?   ? 

である私が理解し得るものをこの

commID phone 
781  88888 

ようになります。 3行が、何私が達成したいことは、この

CustomerID var1 var2 email phone 
123   1  7 [email protected]  88888 

のような単一の行はあなたに EDIに感謝ですT:

結合構文を使用するには、通常、GROUP BYを行う一つに複数の行を結合するには

sel * from maintable 
left join Communication on maintable.CustomerID=Communication.CustomerID 
left join email on email.commID=Communication.CommID 
left join phone on phone.commID=Communication.CommID 
+0

実際のJOIN構文は何ですか?あなたは3行を取得してはならないし、3つではなく、5つのテーブル(または* 7つ)に参加する必要があります。 – LSerni

+0

申し訳ありません私は間違いをしました。私は電子メールと電話のテーブルにCustomerIDを持っていません。ジョイン構文は、maintableからsel * left join maintable.CustomerIDでの通信:Communication.CustomerIDはemail.commIDで電子メールに参加しました= Communication.CommIDはphone.commID = Communication.CommIDに参加電話を残しました – IDDQD

+0

複数の電子メールアドレスが存在する可能性はありますか(すなわち、CommID値= 782のレコードは、電子メールまたは電話番号テーブルのいずれかの2番目のレコードを参照することができます)。もしそうなら、結果はどうあるべきですか? – PaulF

答えて

2

さ:

SELECT maintable.CustomerID, MAX(email), MAX(phone) 
FROM maintable 
LEFT JOIN Communication ON maintable.CustomerID=Communication.CustomerID 
LEFT JOIN email ON email.commID=Communication.CommID 
LEFT JOIN phone ON phone.commID=Communication.CommID 
GROUP BY maintable.CustomerID 
関連する問題