Может ли кто-нибудь дать мне запрос, который выполняется в Oracle 10G - PullRequest
0 голосов
/ 18 марта 2011

Я дал оба запроса. Первый запрос дает правильный вывод (я использую sqlserver).и второй запрос, который я хочу выполнить в Oracle, но он не работает. Пожалуйста, дайте мне правильный запрос, который я могу использовать в Oracle.

SqlServer :

select * 
from branch a left outer join course b on a.courseid=b.courseid 
where b.courseid is NULL

Oracle :

select * 
from branch a, course b 
where a.courseid= b.courseid(+) 

в оракуле этот пункт, где b.courseid равен NULL, не работает.

Ответы [ 3 ]

3 голосов
/ 18 марта 2011

Ваш тег говорит, что вы используете Oracle 10g. Oracle поддерживает синтаксис соединения ANSI с 9i . Следовательно, запрос, который вы запускаете в SQL Server, также должен работать в вашей среде Oracle.

0 голосов
/ 21 марта 2011

Предполагая, что ваш запрос Oracle:

select *
from branch a, course b
where a.courseid= b.courseid(+) and
      b.courseid is null

Тогда я думаю, что это должно быть эквивалентно запросу SQL Server.Вы уверены, что ваши данные одинаковы в обеих базах данных?

0 голосов
/ 18 марта 2011

Прежде всего, я бы использовал тот же синтаксис левого внешнего соединения в Oracle, а не их старый, собственный (+) синтаксис. Oracle делает ту же рекомендацию в своей документации. Существует ряд ограничений на этот синтаксис, которые не применяются к стандартному синтаксису ANSI.

Если вы решили использовать оператор соединения Oracle, я не уверен на 100%, но думаю, вам нужно сделать что-то вроде:

select *
from branch a, course b
where a.courseid = b.courseid(+)
and b.courseid(+) is null;

Прошло много времени с тех пор, как я беспокоился об операторе соединения Oracle.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...