Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Не могу сообразить, HELP  [new]
amireyev
Member

Откуда:
Сообщений: 103
Пример:
ID DES
1 1
1 2
1 3
.......
1 100

Как можно поставить фильтр, что бы запрос допустим, если хотя бы 1 раз встретится 5 или 7, что бы запрос не чего не выводил, можно сделать через NOT IN, то есть

select * from table where id not in
(
select id from table where des in (5,7)
)

Но таблица не маленькая и 2 раза вызывать ее не хочу, есть ли другие варианты?
4 ноя 13, 15:30    [15074484]     Ответить | Цитировать Сообщить модератору
 Re: Не могу сообразить, HELP  [new]
vox22
Member

Откуда: Одесса
Сообщений: 104
Чем не подходит
select * from table where des not in (5,7) ?
4 ноя 13, 15:49    [15074526]     Ответить | Цитировать Сообщить модератору
 Re: Не могу сообразить, HELP  [new]
amireyev
Member

Откуда:
Сообщений: 103
vox22,

Не подходим тем что в таком варианты ID всеровно будет выходить, а это уже не правильно
4 ноя 13, 15:59    [15074553]     Ответить | Цитировать Сообщить модератору
 Re: Не могу сообразить, HELP  [new]
K790
Member

Откуда:
Сообщений: 633
amireyev,

никак.
4 ноя 13, 16:03    [15074567]     Ответить | Цитировать Сообщить модератору
 Re: Не могу сообразить, HELP  [new]
amireyev
Member

Откуда:
Сообщений: 103
K790,

Мне 1 вариант уже подсказали, просто жду может кто-то еще что то подскажет
4 ноя 13, 16:06    [15074578]     Ответить | Цитировать Сообщить модератору
 Re: Не могу сообразить, HELP  [new]
K790
Member

Откуда:
Сообщений: 633
amireyev,

что за вариант ? очень интересно :)
4 ноя 13, 16:08    [15074579]     Ответить | Цитировать Сообщить модератору
 Re: Не могу сообразить, HELP  [new]
amireyev
Member

Откуда:
Сообщений: 103
amireyev,

select * from
(
select id, des, MIN(CASE WHEN des IN (5,7) THEN 1) OVER (PARTITION BY ID) AS has_57 from TABLE
)
WHERE has_57 IS NULL


Всем спасибо!!!
4 ноя 13, 16:08    [15074580]     Ответить | Цитировать Сообщить модератору
 Re: Не могу сообразить, HELP  [new]
Николай Николаевич Дроздов
Guest
А вот так питомцы карабкаются на свет, пробивая себе дорогу через тернии к звездам. Это уникальное явление в мире фауны
4 ноя 13, 16:40    [15074716]     Ответить | Цитировать Сообщить модератору
 Re: Не могу сообразить, HELP  [new]
Zeratulnn
Member

Откуда:
Сообщений: 85
amireyev,

замени min на first_value(CASE WHEN des IN (5,7) THEN 1 end) ignore nulls OVER (PARTITION BY ID order by des) - так быстрее отработает

Можно not exists добавить и проанализировать время( exist отработает до первого совпадения условий. Аналитика все равно все записи просмотрит.)
4 ноя 13, 17:09    [15074811]     Ответить | Цитировать Сообщить модератору
 Re: Не могу сообразить, HELP  [new]
amireyev
Member

Откуда:
Сообщений: 103
Zeratulnn,

Спасибо! по экспериментирую
4 ноя 13, 17:18    [15074837]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить