Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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; |
наталкивается на непонимание компилятора  |
|
 |
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); |
|
Чего проще ?! Такой код не заработает. Внешнее объединение и слева и справа одновременно! |
Да шутка же! |
|
 |
|