2017-05-02 19 views
0

カラムに基づいて2つのテーブルを結合したいと思います。重複のない2つのテーブルを結合するSQL

これらは私の二つの表のとおりです。:ここでは例です

Table1     Table2 

Person | salary  Person | Age 
Tim | 22.50  Larry | 32 
Tony | 49.00  Tim | 22 
John | 32.67  Tony | 44 
Kim | 23.42  John | 31 

そして、私の結果のテーブルは次のようになります。

Person | salary | Age 
Larry |  | 32 
Tim | 22.50 | 22 
Tony | 49.00 | 44 
John | 32.67 | 31 
Kim | 23.42 | 

誰もが一度だけ、彼らがいない場合でも、結果のテーブルに追加されます給料と年齢の両方に価値がある

ありがとうございます!

+0

私たちはあなたのためにSQLクエリを記述しますか? –

+3

'FULL OUTER JOIN'を探して、行きましょう。それから問題が残っていればポストバックしてください。 – Skippy

答えて

2

私はMSアクセスのためのSQLコードを提供しますMS-ACCESSとしてこれをタグ付けしておりますので

MicrosoftはFULL OUTER JOINを行うための機能を持っていないので、既存の使用するための巧妙な方法を考えなければなりませんSQLコマンドを使用してFULL OUTER JOINを作成します。次のコードでは、上記のテーブルを使用してトリックを行う必要があります:

SELECT Table1.Person, Salary, Age 
FROM Table1 INNER JOIN Table2 ON Table1.Person = Table2.Person 
UNION ALL 
SELECT Table1.Person, Salary, Age 
FROM Table1 LEFT JOIN Table2 ON Table1.Person = Table2.Person 
WHERE Table2.Person Is Null 
UNION ALL 
SELECT Table2.Person, Salary, Age 
FROM Table1 RIGHT JOIN Table2 ON Table1.Person = Table2.Person 
WHERE Table1.Person Is Null 
0

これは完全外部結合で行うことができましたが、msアクセスを使用しているため、共用体allを以下の方法で使用する必要があります。
これを試して、問題が発生した場合に備えてお知らせください。

SELECT * FROM table1 t1 
LEFT JOIN 
table2 t2 
ON t1.person = t2.person 
UNION all 
SELECT * FROM table1 t1 
RIGHT JOIN 
table2 t2 
ON t1.person = t2.person 
+0

それはあなたのために働いたのですか? –

+0

いいえ、それはできません。結果の表にはPerson列の2つのコピーがあり、各値の2つのコピーがあります – tee

0

私はあなたの問題は正確が、ここであなたが要求しているだけで何を行いますSQLクエリで何が表示されません。

SELECT Person, salary, Age 
FROM Table1 FULL OUTER JOIN Table2 
WHERE Table1.Person = Table2.Person 

編集:これは、のためにMS-ACCESSでは動作しませんがフル・アウター・ジョインズのサポートの欠如、他の2つの答えがその代替案を説明しました。

関連する問題