powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Нет возможности использовать в left join - OR
13 сообщений из 13, страница 1 из 1
Нет возможности использовать в left join - OR
    #39875686
nc1318
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как можно переписать запрос, если нет возможности использовать в left join - OR

with tb1 as (select 1 a, 2 b, 3 c
from dual
union all
select 4, 5, 6
from dual
union all
select 7, 8, 9
from dual
union
select 80, 88, 10
from dual
union
select 24, 88, 64
from dual
union
select 733, 88, 10
from dual
union
select 456, 99, 7575
from dual
union
select 1001, 90921, 75751
from dual),
tb2 as (select 1 a, 2 b , 3 c
from dual
union
select 5, 3, 1
from dual
union
select 8, 8, 9
from dual
union
select 73, 88, 10
from dual
union
select 100, 929, 7575
from dual
union
select 1001, 9092, 75751
from dual)
select tb1.a, tb1.b, tb1.c, tb2.a, tb2.b, tb2.c
from tb1 left join tb2 on (tb1.b = tb2.b or tb1.c = tb2.c and tb1.a = tb2.a)
...
Рейтинг: 0 / 0
Нет возможности использовать в left join - OR
    #39875691
nc1318
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nc1318,

есть такой вариант, но правильно ли он будет рабоать :
with tb1 as (select 1 a, 2 b, 3 c
from dual
union all
select 4, 5, 6
from dual
union all
select 7, 8, 9
from dual
union
select 80, 88, 10
from dual
union
select 24, 88, 64
from dual
union
select 733, 88, 10
from dual
union
select 456, 99, 7575
from dual
union
select 1001, 90921, 75751
from dual),
tb2 as (select 1 a, 2 b , 3 c
from dual
union
select 5, 3, 1
from dual
union
select 8, 8, 9
from dual
union
select 73, 88, 10
from dual
union
select 100, 929, 7575
from dual
union
select 1001, 9092, 75751
from dual)
select * from tb1 left join
(
select tb1.a a1, tb1.b b1, tb1.c c1
from tb1 join tb2 on tb1.b = tb2.b
union
select tb1.a a1, tb1.b b1, tb1.c c1
from tb1 join tb2 on tb1.c = tb2.c and tb1.a = tb2.a
) tb2 on tb2.a1 = tb1.a and tb2.b1 = tb1.b and tb2.c1 = tb1.c
...
Рейтинг: 0 / 0
Нет возможности использовать в left join - OR
    #39875708
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
Нет возможности использовать в left join - OR
    #39875974
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nc1318нет возможности использовать в left join - OR
Это как так?
...
Рейтинг: 0 / 0
Нет возможности использовать в left join - OR
    #39875983
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousnc1318нет возможности использовать в left join - OR
Это как так?Возможно студенту в одно ухо влетело про ограниечение на оракловый синтаксис джоина, а в другое задача на внешнее соединение.
...
Рейтинг: 0 / 0
Нет возможности использовать в left join - OR
    #39875996
nc1318
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous,

интересно как это можно реализовать
...
Рейтинг: 0 / 0
Нет возможности использовать в left join - OR
    #39875999
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nc1318интересно как это можно реализовать

Что реализовать?

Запрос из Вашего первого поста вроде работает (Oracle 11), что требуется и что не работает - вот лично мне совершенно не понятно.
...
Рейтинг: 0 / 0
Нет возможности использовать в left join - OR
    #39876008
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nc1318интересно как это можно реализоватьЕсли это спортивный интерес, то любое выражение булевой логики можно реализовать без OR.
Если не спортивный, то 21993232
...
Рейтинг: 0 / 0
Нет возможности использовать в left join - OR
    #39876095
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-nc1318интересно как это можно реализоватьЕсли это спортивный интерес, то любое выражение булевой логики можно реализовать без OR.
Оно, конечно, действительно:
Код: plsql
1.
2.
3.
4.
select tb1.a, tb1.b, tb1.c, tb2.a, tb2.b, tb2.c
  from tb1, tb2 
 where not(not(tb1.b = tb2.b(+))
   and not(tb1.c = tb2.c(+) AND tb1.a = tb2.a(+)))


но от ora-01719 на родном оракловом синтаксисе это не спасает :)
...
Рейтинг: 0 / 0
Нет возможности использовать в left join - OR
    #39876135
Фотография Кобанчег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous,

Остаётся благодарить небеса, что в подобных случаях засовывание в case спасает.
Код: plaintext
case when (tb1.b = tb2.b(+) or tb1.c = tb2.c(+) and tb1.a = tb2.a(+)) then 1 end = 1
...
Рейтинг: 0 / 0
Нет возможности использовать в left join - OR
    #39876140
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КобанчегОстаётся благодарить небеса, что в подобных случаях засовывание в case спасает.
Это же не спортивно :)
...
Рейтинг: 0 / 0
Нет возможности использовать в left join - OR
    #39876144
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousКобанчегзасовывание в case спасает.
Это же не спортивно :)
Только decode, только хардкор!
Код: plsql
1.
2.
3.
4.
5.
6.
7.
select tb1.a, tb1.b, tb1.c, tb2.a, tb2.b, tb2.c
  from tb1, tb2 
 where 1 = decode(tb1.b, tb2.b(+), 1
                 , decode( tb1.a, tb2.a(+)
                         , decode(tb1.c, tb2.c(+), 1) 
                   )
           )
...
Рейтинг: 0 / 0
Нет возможности использовать в left join - OR
    #39876148
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ыщщо один кошмарик
Код: plsql
1.
2.
3.
4.
5.
6.
select tb1.a, tb1.b, tb1.c, tb2.a, tb2.b, tb2.c
  from tb1, tb2 
 where 0 = (tb1.b - tb2.b(+))
         * ( abs( tb1.a - tb2.a(+) )
           + abs( tb1.c-tb2.c(+) ) 
           )
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Нет возможности использовать в left join - OR
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]