2011-01-20 23 views
0

基本的に2つのテーブルを結合し、各テーブルの1つの列を1つの列として表示する選択クエリを作成しようとしています。SQL Server:左結合を使用して2つのテーブルの列を1つの列として選択する

テーブル構造は次のようになります

テーブル:

id, email 

表B:

id, tablea_id, email 

ノーと(電子メールや電子メールの単一の列を取得しようとしていますdupesまたはnullsが理想的です)。

[email protected] 
[email protected] 
[email protected] 

と返されたメールアドレスは、AまたはBのいずれかから次のようになります。

理想的な結果は次のようになります。

おそらくユニオンがうまくいくでしょうが、最初のテーブルのIDに基づいて2番目のテーブルでどのようにユニオンを行うのか分かりません。

解決策を探すとき、おそらく私の言葉は悪いですが、私は例を見つけることができません。

ありがとうございました。あなたがこのの行に何かをしたいようだ

SELECT DISTINCT a.email+ ' ' + b.email FROM tableA a LEFT JOIN tableB b on a.Id = b.tablea_Id WHERE b.email IS NOT NULL 
+0

を明確にしてください:あなたはa.dataとb.dataの値は*を組み合わせたいという意味でください*同じ列で、例えば、 a.data = "ABC"とb.data = "DEF"の場合、結果は "ABCDEF"ですか?または、どちらがヌルでないかを見たいですか?または、 'a'と 'b'の各レコードの個別のレコードを必要としますか(この場合、LEFT JOINではなくUNIONを使用します)。 –

+0

だから、テーブルを 'ジョインする 'のか、' UNION'をしますか?重複することができない値は何ですか、データですか? – Lamak

答えて

4

SELECT email 
FROM TableA 
UNION 
SELECT B.email 
FROM TableA A 
JOIN TableB B 
ON A.id = B.TableA_id 
+0

彼は自分が望んでいるところで本当に明確ではないが、これは非常に近いと思う。 – JNK

+0

私は今までこれを見ていませんでしたが、これも正解です。申し訳ありませんが、私の説明は貧しいです... – Jazzy

+0

トーマスが答えを編集する前にこれが答えられたようです。それは正しい答えとしてマークする必要がありますimho – Francisco

0

Select email 
From TableA 
Union 
Select email 
From TableB 

表BのメールアドレスとTablのメールアドレスの一意のリスト表Bに存在するE Aは、あなたが行うことができます。

Select TableA.email 
From TableA 
    Join TableB 
     On TableB.TableA_id = TableA.id 
Union 
Select email 
From TableB 

、コメントごとに、あなたは彼らが表Aに存在する表Bからのすべての表Aからの行と行のみが必要な場合:

Select email 
From Table A 
Union 
Select TableB.email 
From TableB 
    Join TableA 
     On TableA.id = TableB.TableA_id 
+0

私は上記の望ましい結果を表示するように編集しました。 – Jazzy

+0

私は列を連結することを検討していませんが、aとbの両方の結果を含む電子メール(データ)列の組み合わせはもっとあります – Jazzy

+0

私はあなたが望むものの違いを把握していませんと連結。複数の行ではなく、1つの列に結果が完全に収まるようにしたいですか? –

1

あなたは単にあなたが行うことができますいずれかのテーブルから電子メールアドレスの独自のリストをしたい場合はどのようにこの程度

+0

とマークし、これはテーブルbからすべての行を生成します。私はテーブルからすべての行が必要とテーブルbの行のみtableb_id = tablea_id ありがとう – Jazzy

+0

@ジェイソン - Ok。それは私の2番目の解決策の単なる変形です。そのシナリオを私のソリューションに追加しました。 – Thomas

+0

最後のオプションがそのオプションです。私は後方に考えることが私には起こらなかったと思う。本当にありがとう。私はナッツをしようとしていた。それは知っていた組合と組合でした。 – Jazzy

0

これは助けることができる:

SELECT 
    id, email 
FROM 
    a 

UNION 

(
    SELECT 
     a.id AS id, b.email AS email 
    FROM 
     b 
    INNER JOIN 
     a 
    ON 
     a.id = b.tablea_id 
) b 
関連する問題