2015-10-27 102 views
2

無效的標識符我有查詢,如:ORA 00904與左/右外連接

SELECT * 
FROM table1 LEFT OUTER JOIN table2 
ON table1.id=table2.c_id 

它給了我一個錯誤

ORA-00904 「table2.c_id」 無效的標識符

事情是這個查詢與FULL OUTER JOIN和INNER JOIN一起工作 - 沒有錯誤。即使這一個工程:

SELECT * 
FROM table1, table2 
WHERE table1.id=table2.c_id(+) 

錯誤只發生在右或左外部聯接,只有在測試數據庫。

這兩個表都是分區。

生產dB,其中查詢運行完美 - Oracle數據庫11g企業版發佈11.2.0.3.0 - 64位生產

測試數據庫,其中查詢失敗 - Oracle數據庫11g企業版發佈11.2.0.4.0 - 64位生產

這兩個db上的表的配置是相同的。

任何建議可能是什麼?

+1

我沒有你的表來測試。請發佈創建表併爲示例數據插入語句。或者,創建一個SQL小提琴併發佈一個鏈接 –

+0

您是否嘗試過使用別名爲table1和table2,即'select * from table1 t1 left external join table2 t2 on t1.id = t2.c_id'?是否有數據庫鏈接? (當涉及數據庫鏈接時,Oracle有很長的斷開ANSI連接的歷史) –

+0

@FrankSchmitt是的,我使用了別名 - 沒有成功。不確定數據庫鏈接,將檢查 – Tatiana

回答

0

我沒有看到任何SQL問題。

在我12C數據庫,沒有任何問題:

Connected to: 
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production 
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options 

SQL> create table x(id number); 

Table created. 

SQL> create table y(c_id number); 

Table created. 

SQL> insert into x values(1); 

1 row created. 

SQL> insert into y values(1); 

1 row created. 

SQL> insert into y values(2); 

1 row created. 

SQL> SELECT * 
    2 FROM y LEFT OUTER JOIN x 
    3 ON x.id=y.c_id; 

     C_ID   ID 
---------- ---------- 
     1   1 
     2 

11克R2,看到這個SQL Fiddle

+0

當然,它不應該是任何問題,它是簡單的外連接必須工作...這就是爲什麼我問是否有人知道什麼是錯的。可能是一些分區表問題... – Tatiana

+0

@Tatiana這就是爲什麼我要求您提供表格和示例數據。你只是給了一個簡單的查詢說它不起作用。 –

+0

我明白這一點,但我不能在這裏把我們公司的數據庫代碼放在這裏...我會嘗試提供一些腳本(以及其他名稱的列等) – Tatiana

-1

你可以試試這個

SELECT table1.* ,table2.* 
FROM table1 LEFT OUTER JOIN table2 
ON table1.id=table2.c_id 
+0

沒有幫助.... – Tatiana

+0

你可以把真實的代碼模擬代碼。 –