2015-10-27 1 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 Database 11g Enterprise Edition Release 11.2.0.3.0 - 64-разрядные производства

Test дб, где запрос не будет - Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Производство

Конфигурация таблиц на обоих db одинакова.

Любые предложения, что это может быть?

+1

У меня нет таблиц для проверки. Пожалуйста, опубликуйте таблицу create и вставьте инструкции для выборочных данных. Или еще, создайте SQL-скрипт и отправьте ссылку –

+0

Вы пытались использовать псевдонимы для table1 и table2, т. Е. 'Select * from table1 t1 left external join table2 t2 на t1.id = t2.c_id'? Есть ли связь с базой данных? (Oracle имеет долгую историю разбитых ANSI-соединений, когда задействованы ссылки БД) –

+0

@FrankSchmitt да, я использовал псевдонимы - без успеха. Не уверены в ссылках на db, проверит – Tatiana

ответ

0

Я не вижу никаких проблем с SQL. не

На моей базе данных 12с, никаких проблем:

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, см. этот SQL Fiddle

+0

Конечно, это должно быть проблемой, это просто внешнее соединение, которое ДОЛЖНО работать ... вот почему я спрашиваю, кто-то знает, что не так. Может быть, это некоторые таблицы секционирования ... – Tatiana

+0

@Tatiana Вот почему я попросил вас предоставить таблицы и образцы данных. Вы просто дали простой запрос, говоря, что он не работает. –

+0

Я понимаю это, но я не могу поместить здесь код из нашей компании db ... Я попытаюсь предоставить некоторые скрипты (с другими именами столбцов и т. Д.) – Tatiana

-1

вы могли бы попробовать это

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

не помогло .... – Tatiana

+0

Не могли бы вы поместить имитированный код из реального кода. –

 Смежные вопросы

  • Нет связанных вопросов^_^