2016-06-27 3 views
0

異なる列を持つ複数の表を持つ場合は、それらをすべて1つのレコードとして追加したいと思います。ただし、いずれかのレコードにレコードがない場合、 他のテーブルから取得された他のレコードは表示されません。残りのテーブルの結果を表示するにはどうしたらいいですか?たとえば、1つのカタログを持つテーブルが3つあります( )。テーブルAにレコードがなく、テーブルBとCにレコードがないとします。これらのテーブル(テーブルBとC)の結果を表示するにはどうすればよいですか?表Aにレコードがない場合でも例えばOracle上の複数の表から行を取得する[1つ以上の表が空である]

:今

Table A 
RECN 
FNAME 

TABLE B 
RECN 
DATE 

TABLE C 
RECN 
ATTR1 

Table CAT 
RECN 
LABEL 

SELECT TA.*,TB.*,TC.* 
FROM 
(SELECT A.RECN, A.FNAME, CAT.LABEL 
FROM A, CAT 
WHERE A.RECN= CAT.RECN) TA, 
(SELECT B.RECN, B.DATE, CAT.LABEL 
FROM B, CAT 
WHERE B.RECN=CAT.RECN) TB, 
(SELECT C.RECN, C.ATTR1, CAT.LABEL 
FROM C, CAT 
WHERE C.RECN=CAT.RECN) TC 

、Iは、空行を取得するが、私は、値を含むテーブルの値を示さなければなりません。

はあなたの助け

+0

サンプル入出力データを表示できますか?また、あなたの結合構文が奇妙に見えます( 'A.RECN = CAT.RECN')。 –

答えて

0

使用LEFT JOINのために事前にありがとうございます。さらに、サブクエリは問題ではありませんが、必要ありません。実際には、JOINの構文が間違っています。クエリは次のようになります。

SELECT A.RECN, A.FNAME, CAT.LABEL, 
     B.RECN, B.DATE, CAT.LABEL, 
     C.RECN, C.ATTR1, CAT.LABEL 
FROM TA LEFT JOIN 
    TB 
    ON B.RECN = CAT.RECN LEFT JOIN 
    TC 
    C.RECN = CAT.RECN; 
関連する問題