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

Откуда:
Сообщений: 7
Помогите пожалуйста с запросом!!!!
Есть таблица типа:
doc war
1 6
1 6
1 5
2 5
2 3
3 6
3 5
Нужен запрос чтобы результатом были записи у которых в столбце war есть значение 5 и 6, а doc был равным.... ну типа:
результат
1
3
10 фев 09, 12:03    [6800152]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
__vvp_
Member

Откуда: Санкт-Петербург
Сообщений: 1158
petrik_86,


with t as (select 1 doc, 6 war from dual
           union all
           select 1, 6 from dual
           union all
           select 1, 5 from dual
           union all
           select 2, 5 from dual
           union all
           select 2, 3 from dual
           union all
           select 3, 6 from dual
           union all
           select 3, 5 from dual)
select doc
from (
      select doc, war
      from t
      where war in (5, 6)
      )
group by doc
having count(*) > 1
10 фев 09, 12:15    [6800244]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
stax..
Guest
petrik_86,


Из таблицы надо выбрать только строки заказов, в которых присутсвуют ВСЕ из списка

.....
stax
10 фев 09, 12:19    [6800280]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Oracloidesche
Member

Откуда: Moscow
Сообщений: 56
__vvp_,

Тогда уж так. А то если допустим будет две записи с 5, то все равно попадет в результат.
with t as (select 1 doc, 6 war from dual
           union all
           select 1, 6 from dual
           union all
           select 1, 5 from dual
           union all
           select 2, 5 from dual
           UNION ALL
           SELECT 2, 5 FROM dual
           union all
           select 2, 3 from dual
           union all
           select 3, 6 from dual
           union all
           select 3, 5 from dual)
SELECT doc FROM(
SELECT doc,war cnt
FROM t
WHERE war IN (5,6)
GROUP BY doc,war
)
GROUP BY doc
HAVING COUNT(*)>1
10 фев 09, 13:14    [6800778]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Elic
Member

Откуда:
Сообщений: 29980
Oracloidesche
А то если допустим будет две записи с 5, то все равно попадет в результат.
count(distinct догадайся_сам_чего)
10 фев 09, 13:20    [6800832]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
__vvp_
Member

Откуда: Санкт-Петербург
Сообщений: 1158
Oracloidesche
__vvp_,

А то если допустим будет две записи с 5, то все равно попадет в результат.


Да, конечно. Нужен count(distinct
with t as (select 1 doc, 6 war from dual
           union all
           select 1, 6 from dual
           union all
           select 1, 5 from dual
           union all
           select 2, 5 from dual
           union all
           select 2, 3 from dual
           union all
           select 2, 7 from dual
           union all
           select 2, 3 from dual
           union all
           select 3, 6 from dual
           union all
           select 3, 5 from dual)
select doc
from t
where war in (5, 6)
group by doc
having count(distinct war) = 2
10 фев 09, 13:35    [6800953]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
petrik_86
Member

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

А если в строк есть несколько тысяч а то и больше?
10 фев 09, 13:51    [6801071]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
__vvp_
Member

Откуда: Санкт-Петербург
Сообщений: 1158
petrik_86
__vvp_,

А если в строк есть несколько тысяч а то и больше?


Вместо in (5,6)?
Ну Вам же дали ссылку
10 фев 09, 13:58    [6801134]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
__vvp_
Member

Откуда: Санкт-Петербург
Сообщений: 1158
petrik_86
__vvp_,

А если в строк есть несколько тысяч а то и больше?

Что-то типа такого

select doc
from t
where war in (select f1 from t1)
group by doc
having count(distinct war) = (select count(distinct f1) from t1)
10 фев 09, 14:03    [6801182]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить