Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle ORA 00904具有左/右外部联接的无效标识符_Oracle_Join_Oracle11g_Partitioning_Outer Join - Fatal编程技术网

Oracle ORA 00904具有左/右外部联接的无效标识符

Oracle ORA 00904具有左/右外部联接的无效标识符,oracle,join,oracle11g,partitioning,outer-join,Oracle,Join,Oracle11g,Partitioning,Outer Join,我有如下疑问: SELECT * FROM table1 LEFT OUTER JOIN table2 ON table1.id=table2.c_id 这给了我一个错误 ORA-00904“表2.c_id”无效标识符 问题是,查询与完全外部连接和内部连接一起工作-没有错误。就连这一条也行: SELECT * FROM table1, table2 WHERE table1.id=table2.c_id(+) 错误仅发生在右或左外部联接上,并且仅发生在测试db上 两个表都是分区表 生产数据库

我有如下疑问:

SELECT *
FROM table1 LEFT OUTER JOIN table2
ON table1.id=table2.c_id
这给了我一个错误

ORA-00904“表2.c_id”无效标识符

问题是,查询与完全外部连接和内部连接一起工作-没有错误。就连这一条也行:

SELECT *
FROM table1, table2
WHERE table1.id=table2.c_id(+)
错误仅发生在右或左外部联接上,并且仅发生在测试db上

两个表都是分区表

生产数据库,其中查询运行完美-Oracle Database 11g Enterprise Edition 11.2.0.3.0版-64位生产

测试数据库,其中查询失败-Oracle Database 11g Enterprise Edition 11.2.0.4.0版-64位生产

两个数据库上的表配置相同


有什么建议吗?

我看不出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
在11g R2上,请看这个。

你能试试这个吗

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

我没有你的桌子要测试。请发布示例数据的create table和insert语句。或者,创建一个SQL Fiddle并发布一个链接您是否尝试过为table1和table2使用别名,即从table1 t1左外连接table2 t2到t1.id=t2.c_id?是否涉及数据库链接?(Oracle在涉及DB链接时有很长的断开ANSI连接的历史)@FrankSchmitt是的,我使用了别名-没有成功。不确定数据库链接,将检查更多要检查的内容(所有与ANSI语法的Oracle错误相关):-其中一个表是否包含域索引?-其中一个表是否包含CLOB/BLOB列其中一个表是否包含XMLTYPE列?当然,这应该是任何问题,它是简单的外部联接,必须工作。。。这就是为什么我问是否有人知道是什么错了。可能是一些分区表问题…@Tatiana,这就是为什么我要求您提供这些表和示例数据。你只是给出了一个简单的查询,说它不工作。我理解它,但我不能把我们公司数据库的代码放在这里。。。我将尝试提供一些脚本(列的其他名称等)