2016-05-18 2 views
0

3つのテーブルからすべての一致するレコードをフェッチする必要があるクエリがあります。 3つのテーブルでは一般的ではない他のレコード、それが必要組合は、最初のテーブルからレコードが.. EX:クエリ上記1つのテーブルのすべての値を含むべき3つのテーブルから別個のレコードを取り出す方法

select a.x,a.y,a.z 
from table1 a,table2 b,table3 c 
where a.x=b.x 
and b.x=c.x; 

すべての3つのテーブル間で共通のレコードを取得します。 テーブル2またはテーブル3に存在しない結果セットにレコードを追加する必要があります。

レコードは以下のように来る必要があります:

1 abc acd 
2 xyz xzy 
3 pqr prq 
4 null null -- incase 4 is not present in either table2 or table3 

答えて

0

があなたの代わりにouter joinを使用する必要があります。

select a.x,a.y,a.z 
from table1 a 
    left join table2 b on a.x=b.x 
    left join table3 c on b.x=c.x; 
0

あなたの状態を

3つのテーブルに共通しない他のレコードは、 の最初のテーブルのレコードを結合する必要があります。

次に状態

私は テーブル2または表3に存在していない私の結果セットにレコードを追加する必要があります。

最初のケースでは、すべてのテーブルからすべての行を返す完全外部結合を使用します。 2番目のケースでは、table1と一致しない行を除外する左結合を使用します。

+0

ありがとう@sgeddesとJoe C –

関連する問題