2012-03-12 12 views
0

2つのテーブルを結合しようとしていますが、SQLを取得できません。私のSQLステートメントは、以下のSQLよりはるかに複雑ですが、以下のSQLは原則を示すために行います。 tまたはpを参照しようとすると、無効な識別子例外が発生します。どのように私はこれらを参照することはできませんか?私はOracle DBを使用しています。JavaでのSQLフル結合

SQL:

SELECT * FROM ((SELECT * FROM transactions t) FULL JOIN (SELECT * FROM payments p) ON (t.id = p.trans_id)); 

例外:

Caused by: java.sql.SQLException: ORA-00904: "P"."TRANS_ID": invalid identifier 

答えて

3

は、あなたが行う必要があります :もちろん

SELECT * 
FROM (SELECT * FROM transactions) t 
FULL JOIN (SELECT * FROM payments) p 
ON (t.id = p.trans_id); 

、あなたの代わりにこれらの簡単なSELECT秒の本当の派生テーブルを使用していると仮定して、それ以外の場合はあなただけのテーブルを使用する必要があります直接。

+0

ああ、私は今参照してください。あなたの速い返信をありがとう! – aandeers

2

エイリアスが間違った場所にあります。それは、このような単純なクエリに派生テーブルを使用しても意味がありませんことを

SELECT * 
FROM 
(SELECT * FROM transactions) t 
FULL JOIN 
(SELECT * FROM payments) p 
ON t.id = p.trans_id 

注:派生テーブルの別名はちょうど後に閉じ括弧でなければなりません。私はあなたが実際に導出されたテーブルを必要としていると仮定し、あなたは単に質問のためのあなたのクエリを簡略化しました。

は、あなたが本当にあなたのquerysエイリアスを与えていない
+0

ああ、私は今参照してください。あなたの速い返信をありがとう! – aandeers