| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 | ||||||||
2Oleg - поясняю: существует два вида объединения таблиц - внешние объедниения и внутренние. внешнее объединение выполняется с помощью конструкции
а внутренне определяется в конструкции WHERE
теперь представьте, что в таблице студенов, не во всех записях проставлено ID курса.... в первом случае выберуться все записи где проставлен и не проставлен ID курса (при внешнем объеденении), а во втором (при внутреннем объеденении), только те, где проставлен ID курса. а оператор UNION используется для объединения результатов двух разных запросов в один набор данных.... но обязательно условие, что количество полей и их тип будут идентичны.... P.S. в Oracle не существует конструкции INNER JOIN....ON, но внешне объединения осущестляются так же как и внтуренние (в констукии WHERE) но после подчиненного значения ставиться знак плюсика в скобках....
|
| Автор: Unregistered 31.1.2003, 22:17 | ||
В 9i такая конструкция уже осуществима, видимо много звонков к ним было с данной проблеммой.. |