powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Интересный запрос
14 сообщений из 14, страница 1 из 1
Интересный запрос
    #39568589
cobalt_frog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер,

столкнулся с задачей..есть таблицы:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
with tmp as (select 1 id from dual
             union all
             select 2 id from dual) 
select  tmp.id
  from  tmp
        ,(select 3 id from dual)  t1
        ,(select 4 id from dual)  t2
        ,(select 1 id from dual
          union all
          select 6 id from dual)  t3
        ,(select 1 id from dual)  t4
        ,(select 1 id from dual where 1=3)  t5



необходимо вернуть все записи из tmp таким образом, чтобы если в наборах t1,t2,t3,t4,t5 есть записи с такимии же id, то была фильтрация, т.е. tmp.id =t1.id, если же нет записей, то отображалась бы запись из tmp без сравнения.

всем спасибо
...
Рейтинг: 0 / 0
Интересный запрос
    #39568593
cobalt_frog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
join не прокатит, потому что если набор пустой то данные вообще не вернутся, left join тоже не подходит, если имеются в наборах id значения с id отличающимися от id в tmp, то данные из tmp вернутся полностью и фильтра не будет.
...
Рейтинг: 0 / 0
Интересный запрос
    #39568597
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
not in (....)
...
Рейтинг: 0 / 0
Интересный запрос
    #39568600
cobalt_frog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsevnot in (....)

почему нот ин? если данные там есть, мне нужно выбрать из tmp которые совпадают по id.
...
Рейтинг: 0 / 0
Интересный запрос
    #39568606
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cobalt_frog,

А можно пример, таблицу на вход и таблицу на выход?

Потому как сейчас видится

Код: plsql
1.
2.
select  tmp.id
  from  tmp



И не важно подошла запись или нет, она отберется
...
Рейтинг: 0 / 0
Интересный запрос
    #39568609
cobalt_frog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaximaXXLcobalt_frog,

А можно пример, таблицу на вход и таблицу на выход?

Потому как сейчас видится

Код: plsql
1.
2.
select  tmp.id
  from  tmp



И не важно подошла запись или нет, она отберется

Запрос
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
with tmp as (select 1 id from dual
             union all
             select 2 id from dual) 
select  tmp.id
  from  tmp
        ,(select 3 id from dual)  t1
        ,(select 4 id from dual)  t2
        ,(select 1 id from dual
          union all
          select 6 id from dual)  t3
        ,(select 1 id from dual)  t4
        ,(select 1 id from dual where 1=3)  t5


ничегоне должен вернуть.
Запрос:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
with tmp as (select 1 id from dual
             union all
             select 2 id from dual) 
select  tmp.id
  from  tmp
        ,(select 3 id from dual where 1=3)  t1
        ,(select 4 id from dual where 1=3)  t2
        ,(select 1 id from dual
          union all
          select 6 id from dual)  t3
        ,(select 1 id from dual)  t4
        ,(select 1 id from dual where 1=3)  t5

должен вернуть запись с id = 1
...
Рейтинг: 0 / 0
Интересный запрос
    #39568613
cobalt_frog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
упрощу задачу:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
with x as (select 1 id from dual
             union all
             select 2 id from dual) 
select  x.id
  from  x
        ,(select 1 id from dual
          union all
          select 6 id from dual)  t1

тут должна вернуться запись с id = 1
, здесь же:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
with x as (select 1 id from dual
             union all
             select 2 id from dual) 
select  x.id
  from  x
        ,(select 3 id from dual
          union all
          select 6 id from dual)  t1


вообще ничего, а запрос:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
with x as (select 1 id from dual
             union all
             select 2 id from dual) 
select  x.id
  from  x
        ,(select 1 id from dual where 1=2
          union all
          select 6 id from dual where 2=3)  t1


должен вернуть записи с id = 1 и 2
...
Рейтинг: 0 / 0
Интересный запрос
    #39568614
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cobalt_frog,

Вы просто БОГ постановки задачи ....

А в чем разница между этими 2 селектами? В первом - ничего, а после отключения 2 таблиц с несуществующими кодами 3 и 4 но при этом осталась 6 из таблицы t3 он чтот должен начать возвращать? Так Вым надо хоть в одной таблице? Или как наличие несуществующего ID должно повлиять на результат?
...
Рейтинг: 0 / 0
Интересный запрос
    #39568615
cobalt_frog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaximaXXLcobalt_frog,

Вы просто БОГ постановки задачи ....

А в чем разница между этими 2 селектами? В первом - ничего, а после отключения 2 таблиц с несуществующими кодами 3 и 4 но при этом осталась 6 из таблицы t3 он чтот должен начать возвращать? Так Вым надо хоть в одной таблице? Или как наличие несуществующего ID должно повлиять на результат?

согласен, кривая постановка. Я указал новую постановку выше.
...
Рейтинг: 0 / 0
Интересный запрос
    #39568622
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
with x as (select 1 id from dual
             union all
             select 2 id from dual),
y as (select 1 id from dual
             union all
             select 6 id from dual) 
select  x.id
  from  x
  where
-- если в наборе есть записи с такимии же id, то была фильтрация
  x.id in (select y.id from y)
or
-- если же нет записей, то отображалась бы запись из tmp без сравнения.
  not exists (select 1 from y )
...
Рейтинг: 0 / 0
Интересный запрос
    #39568626
cobalt_frog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
with x as (select 1 id from dual
             union all
             select 2 id from dual),
y as (select 1 id from dual
             union all
             select 6 id from dual) 
select  x.id
  from  x
  where
-- если в наборе есть записи с такимии же id, то была фильтрация
  x.id in (select y.id from y)
or
-- если же нет записей, то отображалась бы запись из tmp без сравнения.
  not exists (select 1 from y )



точняк...спасибо большое..чет под вечер совсем голова не фурычит...
...
Рейтинг: 0 / 0
Интересный запрос
    #39568628
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cobalt_frog,

Можно так попробовать

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
with x as (select 1 id from dual
             union all
           select 2 id from dual) 
,t1 as (select 1 id from dual where 1=3
          union all
        select 6 id from dual where 1=3)             
select  x.id
  from  x
        ,(
        select id, 1 cnt from t1
        union all
        select null, count(*) cnt from t1
        ) t1_x
          
Where x.id = decode(t1_x.cnt,0,x.id,t1_x.id)
...
Рейтинг: 0 / 0
Интересный запрос
    #39568708
Странная задача какая-то.
Оба последних варианта реализуются соединениями, а их почему-то нельзя использовать явно 😃
...
Рейтинг: 0 / 0
Интересный запрос
    #39568778
cobalt_frog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaximaXXLcobalt_frog,

Можно так попробовать

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
with x as (select 1 id from dual
             union all
           select 2 id from dual) 
,t1 as (select 1 id from dual where 1=3
          union all
        select 6 id from dual where 1=3)             
select  x.id
  from  x
        ,(
        select id, 1 cnt from t1
        union all
        select null, count(*) cnt from t1
        ) t1_x
          
Where x.id = decode(t1_x.cnt,0,x.id,t1_x.id)



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


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