powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Простой запрос
3 сообщений из 3, страница 1 из 1
Простой запрос
    #39524378
Стыдно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужна помощь с таким запросом:
Есть 2 таблицы t1 c одним полем и t2 с двумя полями. Во всех трех полях лежат уникальные идентификаторы одной последовательности.
Требуется из 1й таблицы исключить любую из каждой пары строк, найденной в одной строке t2.
Пример:
из
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
with t1 as (select 1 ID from dual union all
              select 2 from dual union all
              select 3 from dual union all
              select 6 from dual),
     t2 as (select 2 ID, 3 Pair from dual union all
              select 3, 2 from dual union all
              select 5, 6 from dual union all
              select 6, 5 from dual)


получить 1, 2 и 6 или 1, 3 и 6 поскольку в t2 нашлась строка 2,3 - надо любое из них исключить.

Мои потуги пока остановились на
Код: plsql
1.
2.
select * from t1
where not exists (select 0 from t2 where greatest(t2.id, t2.pair) = t1.id)


но это неправильно, т.к. получаю 1 и 2 (без 6)
...
Рейтинг: 0 / 0
Простой запрос
    #39524381
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стыдно,

как идея (надо проспатся )

если надо допилить least/greatest

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
  1  with t1 as (select 1 ID from dual union all
  2                select 2 from dual union all
  3                select 3 from dual union all
  4                select 6 from dual),
  5       t2 as (select 2 ID, 3 Pair from dual union all
  6                select 3, 2 from dual union all
  7                select 5, 6 from dual union all
  8                select 6, 5 from dual)
  9  select * from t1 where
 10  not exists (select 1 from t2,t1 tt
 11              where tt.id>=t1.id and (t1.id,tt.id) in ((t2.id,t2.pair)))
 12* order by 1
SQL> /

        ID
----------
         1
         3
         6



.....
stax
...
Рейтинг: 0 / 0
Простой запрос
    #39524406
Стыдно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,

Подойдет, спасибо.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Простой запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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