2012-03-12 61 views
0

我想加入兩個表,但無法獲得SQL權限。我的SQL語句比下面的SQL要複雜得多,但下面的SQL將會顯示原理。嘗試引用t或p時,我收到無效的標識符異常。我怎麼能不提這些?我正在使用Oracle DB。SQL完全加入Java

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

你是不是真的給你querys一個別名,你應該做的:

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

當然,假設你使用真正的派生表,而不是那些簡單SELECT S,否則你應該只使用表直。

+0

哦,我現在看到。感謝您的快速回復! – aandeers 2012-03-12 14:38:10

2

的別名是在錯誤的地方。對於派生表別名應該只是右括號:

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

注意,這是沒有意義的使用派生表這樣一個簡單的查詢。我假設你確實需要派生表,並且你簡化了你對查詢的查詢。

+0

哦,我現在看到。感謝您的快速回復! – aandeers 2012-03-12 14:38:20