2016-10-10 23 views
0

を組み合わせる:SQL完全外部結合と私は、次の2つのテーブルを持つ2つの列

テーブルA:

UserID  PermissionTableA 
UserA  PermissionA 
UserB  PermissionA 
UserC  PermissionB 
UserD  PermissionB 

テーブルB:

UserID  PermissionTableB  
UserA  PermissionC  
UserA  PermissionD  
UserB  PermissionC  
UserB  PermissionD 

2つのテーブルIDを介して接合し、されなければなりませんアクセス許可は、次のように1つの列にまとめてください。

ソリューション:

フルアウターとしかし私の現在のソリューションは、参加
UserID  Permission  
UserA  PermissionC  
UserA  PermissionD  
UserA  PermissionA  
UserB  PermissionC  
UserB  PermissionD  
UserB  PermissionA 

は、次のようになります。

UserID  PermissionTableA PermissionTableB 
UserA  PermissionC   - 
UserA  PermissionD   - 
UserA  -     PermissionA  
UserB  PermissionC   - 
UserB  PermissionD   - 
UserB  -     PermissionA  

それはMSを使用してSQLクエリと上記溶液のテーブルと同様のもの、(に両方の列を組み合わせることが可能ですアクセス)。

ありがとうございます。

+0

CASE WHENの行に沿って何かを使用できますが、それに相当するものがms-accessにあるかどうかは分かりません。 – VDK

答えて

1

あなたはジョインを探していません:-)ジョインはレコードを結合します。あなたがしているのは、2つのクエリ結果の和集合です。

select UserID, PermissionTableA as Permission 
from TableA 
UNION 
select UserID, PermissionTableB 
from TableB 
where UserID in (select UserID from TableA) 
order by UserID, Permission; 

UPDATE:あなたは同様にあなたの外側を使用することがNZに参加します。申し訳ありませんが、クエリが何をすべきかを確認するまでに時間がかかりました。

select UserId, NZ(PermissionTableA, PermissionTableB) as Permission 
from ... 
+0

それは彼に望ましい結果を与えるだろうか? – VDK

+0

@Vijey:ソート順を除いて。それが重要だった場合は、その場でテーブルのソートキーを作成する必要がありました。私はそうではないと思ったので、私は自分の答えを簡単にしました。 –

+0

@Vijey:ああ、私は今あなたが意味するものを見ます。私はユーザーCとDを却下しなければなりません。私は編集します。ありがとうございました。 –

関連する問題