Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > внешние соединения и OR в PL/SQL


Автор: Medved 18.12.2002, 06:00
Вот такая проблемма, в PL/SQL, когда я использую внешние соединения, (т.е. (+) ), использование операторов OR и IN запрещено, есть ли какая-либо альтернатива?

Автор: AntonSaburov 18.12.2002, 21:13
Извращенно немного, но так должно работать

select * from unit, collect where unit.id = collect.unit_id
union
select * from unit, collect where unit.id not in (select collect.unit_id from collect)

Дальше сам додумаешь :)

Автор: Medved 20.12.2002, 04:55
да, про Union я знаю.....но все равно тебе спасибо..... а есть ли еще какие нибудь альтернативы?

Автор: Oleg 29.12.2002, 02:33
Что значит "внешние соединения"?.DBMS_PIPE, MESSAGES и тюдю?
Уточнить надо бы.

Автор: Medved 29.12.2002, 03:05
Цитата

Что значит "внешние соединения"?.DBMS_PIPE, MESSAGES и тюдю?
Уточнить надо бы.


2Oleg - поясняю:
существует два вида объединения таблиц - внешние объедниения и внутренние.

внешнее объединение выполняется с помощью конструкции

Код

INNER JOIN
ON


а внутренне  определяется в конструкции WHERE
Код

SELECT *
FROM Student A, Kurs B
WHERE A.Kurs_ID = B.ID


теперь представьте, что в таблице студенов, не во всех записях проставлено ID курса....

в первом случае выберуться все записи где проставлен и не проставлен ID курса (при внешнем объеденении), а во втором (при внутреннем объеденении), только те, где проставлен ID курса.

а оператор UNION используется для объединения результатов двух разных запросов в один набор данных.... но обязательно условие, что количество полей и их тип будут идентичны....



P.S. в Oracle не существует конструкции INNER JOIN....ON, но внешне объединения осущестляются так же как и внтуренние (в констукии WHERE) но после подчиненного значения ставиться знак плюсика в скобках....

Код

SELECT *
FROM Student A, Kurs B
WHERE A.Kurs_ID = B.ID(+)



Автор: Unregistered 31.1.2003, 22:17
Цитата

Pegas
в Oracle не существует конструкции INNER JOIN....ON

В 9i такая конструкция уже осуществима, видимо много звонков к ним было с данной проблеммой..


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)