CftClub.ru
Клуб специалистов ЦФТ-Банк

FULL OUTER JOIN

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
prog
Эксперт


Вступление в Клуб: 03.03.2008
СообщениеСр Мар 10, 2010 15:53   FULL OUTER JOIN Ответить с цитатой
Полезность: Нет оценки
Как на PLPLUS написать запрос, использующий FULL OUTER JOIN?
например:
Код:
select * from dual t1 FULL OUTER JOIN dual t2 on T1.DUMMY = T2.DUMMY


Код типа
Код:
select t1 (T1.DUMMY, T2.DUMMY) in dual%rowtype FULL OUTER JOIN dual%rowtype t2 on T1.DUMMY = T2.DUMMY;

наталкивается на непонимание компилятора Sad
prog
Эксперт


Вступление в Клуб: 03.03.2008
СообщениеСр Мар 10, 2010 16:01    Ответить с цитатой
Полезность: Нет оценки
Пока нашел только такое решение:
Код:
type main is
select t1 (t1.DUMMY, t2.DUMMY) in dual%rowtype, (dual%rowtype : t2) where t1.[DUMMY] = t2.[DUMMY](true)
UNION ALL
select t2 (null, t2.DUMMY) in dual%rowtype where not exists (select t1(1 : x) in dual%rowtype where T1.[DUMMY] = T2.[DUMMY]);


Но это работает очень долго...
kit83rd
Участник со стажем


Вступление в Клуб: 05.02.2010
СообщениеЧт Мар 11, 2010 04:55    Ответить с цитатой
Полезность: 1
Альтернатива FULL OUTER JOIN - у такая

Код:

select t1 (t1.DUMMY, t1_2.DUMMY) in dual%rowtype, (dual%rowtype : t1_2) where t1.[DUMMY] = t1_2.[DUMMY](true)
   UNION ALL
   select t2 (t2.DUMMY, t2_2.DUMMY) in dual%rowtype, (dual%rowtype : t2_2) where t2.[DUMMY](true) = t2_2.[DUMMY]
kit83rd
Участник со стажем


Вступление в Клуб: 05.02.2010
СообщениеЧт Мар 11, 2010 04:58    Ответить с цитатой
Полезность: 1
Ошибся чуть. Вместо UNION ALL нужно UNION использовать.
2mb
Участник


Вступление в Клуб: 23.04.2008
СообщениеВт Июл 27, 2010 11:34   Re: FULL OUTER JOIN Ответить с цитатой
Полезность: Нет оценки
prog пишет:
Как на PLPLUS написать запрос, использующий FULL OUTER JOIN?
например:
Код:
select * from dual t1 FULL OUTER JOIN dual t2 on T1.DUMMY = T2.DUMMY


Вот так будет проще
Код:
select t1(T1.DUMMY, T2.DUMMY) in dual%rowtype, (dual%rowtype t2) where T1.DUMMY(true) = T2.DUMMY(true);
kit83rd
Участник со стажем


Вступление в Клуб: 05.02.2010
СообщениеВт Авг 03, 2010 08:01   Re: FULL OUTER JOIN Ответить с цитатой
Полезность: Нет оценки
2mb пишет:

Вот так будет проще
Код:
select t1(T1.DUMMY, T2.DUMMY) in dual%rowtype, (dual%rowtype t2) where T1.DUMMY(true) = T2.DUMMY(true);


Чего проще ?! Такой код не заработает. Внешнее объединение и слева и справа одновременно!
2mb
Участник


Вступление в Клуб: 23.04.2008
СообщениеСр Авг 04, 2010 14:19   Re: FULL OUTER JOIN Ответить с цитатой
Полезность: Нет оценки
kit83rd пишет:
2mb пишет:

Вот так будет проще
Код:
select t1(T1.DUMMY, T2.DUMMY) in dual%rowtype, (dual%rowtype t2) where T1.DUMMY(true) = T2.DUMMY(true);


Чего проще ?! Такой код не заработает. Внешнее объединение и слева и справа одновременно!


Да шутка же!
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru