2016-10-12 3 views
-1

を維持しながら:SQL連合どのようにアクセスSQLに2つのテーブルは次のようにUNION句することができ、すべてのフィールド値(MS Accessの)

TableAの

UserID Name Option 
A  John O1 
B  Doe O2 

をTableBの

UserID Option 
A  O3 
B  O4 

電流出力:

UserID Name Option  
A  John O1 
A  - O3 
B  Doe O2 
B  - O4 

De産ま出力:

UserID Name Option  
A  John O1 
A  John O3 
B  Doe O2 
B  Doe O4 

現在のクエリ(定期的な連合):代わりにNULLとして名前の

SELECT UserID, Name, Option 
FROM TableA 
UNION ALL 
SELECT UserID, Null As Name, Option 
FROM TableB 

は、私は、ユーザーIDに基づいて、テーブルAの名前の上に利用したいと思います。

SELECT UserID, Name, Option 
FROM TableA 
UNION ALL 
SELECT UserID, (Select TOP 1 Name FROM TableA WHERE TableA.UserID = UserID) As Name, Option 
FROM TableB 

上記のクエリは機能しません。おそらく参照するUserIDがわからないためです。

希望の出力はまったく可能ですか?組合を通じて達成されてはならない。

私は、SQLクエリの代わりにVBAを使用した行単位のアプローチを検討していました。

答えて

0

ユーザーIDは、テーブルAには重複がない場合、単に行うleft join:私はそれだ他の2つのオプションが良いものですが、私はこれを指すように望んでいた

SELECT UserID, Name, Option 
FROM TableA 
UNION ALL 
SELECT TableB.UserID, Name, TableB.Option 
FROM TableB LEFT JOIN TableA 
ON TableB.UserID=TableA.UserID 
0

アウト:

UserIDの値を入力すると、試したサブクエリで実行できます。

SELECT UserID, Name, Option 
FROM TableA 
UNION ALL 
SELECT UserID, 
     (Select TOP 1 Name 
     FROM TableA 
     WHERE TableA.UserID = TableB.UserID) As Name, 
     Option 
FROM TableB 

私はこれを再フォーマットしましたが、私が変更したのはTableA.userID = UserIDTableA.UserID = TableB.UserIDに変更したことだけです。サブクエリがサブクエリ外のテーブルを参照する部分は、という相関サブクエリと呼ばれます。

+0

が非常に似て取得する(インナー)TableAに参加する必要があり... – jarlh

0

を動作するはずだと思う

SELECT UserID, Name, Option 
FROM TableA 
UNION ALL 
SELECT tb.UserID, ta.Name, tb.Option 
FROM TableB tb 
LEFT JOIN TableA ta ON tb.UserID = ta.UserID 
0

あなたは1時間、この前に、私の答えにName

SELECT A.UserID, A.Name, A.Option 
    FROM TableA A 
UNION 
SELECT A.UserID, A.Name, B.Option 
    FROM TableA A 
     INNER JOIN TableB B 
      ON A.UserID = B.UserID; 
関連する問題