Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / хитрый SQL или нудная хранимая процедура / 6 сообщений из 6, страница 1 из 1
21.02.2008, 13:51
    #35147459
Rust()
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрый SQL или нудная хранимая процедура
помогите решить такую задачу:
пусть есть таблица TABLE1
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
ID| ID1 | ID2 | VAL
 1  |  1    |  1    | val1
 2  |  2    |  1    | val2
 3  |  3    |  1    | val3
 4  |  1    |  2    | val1
 5  |  2    |  2    | val2
 6  |  3    |  2    | val2
 7  |  1    |  3    | val1
 8  |  2    |  3    | val2
 9  |  3    |  3    | val3

на вход подается значение i_id2. Для этого значения определяется выборка:

Код: plaintext
1.
select ID1, VAL from TABLE1 WHERE ID2=i_id2

требуется проверить есть ли для остальных ID2 не равных i_id2 выборки, совпадающие с найденной выше выборкой.

Например, для входного значения i_id2=1 получаем выборку
Код: plaintext
1.
2.
3.
4.
ID1 |  VAL
 1    |  val1
 2    |  val2
 3    |  val3

такая выборка существует для ID2=3
А для i_id2=2 такой выборки не существует/
...
Рейтинг: 0 / 0
21.02.2008, 14:29
    #35147661
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрый SQL или нудная хранимая процедура
"Такая выборка" - это существование таких же записей или еще и совпадение по кол-ву записей?
Т.е., что будет для id2=2, если будет в добавок еще и
Код: plaintext
1.
ID  | ID1 | ID2 | VAL
10| 3   | 2   | val3
...
Рейтинг: 0 / 0
21.02.2008, 14:35
    #35147697
Rust()
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрый SQL или нудная хранимая процедура
совпадение количества записей не обязательно, для id2=2 результат будет "существует"
...
Рейтинг: 0 / 0
21.02.2008, 14:54
    #35147797
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрый SQL или нудная хранимая процедура
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
with t (ID, ID1, ID2, VAL) as (
values 
  ( 1 ,  1 ,  1 , 'val1')
, ( 2 ,  2 ,  1 , 'val2')
, ( 3 ,  3 ,  1 , 'val3')
, ( 4 ,  1 ,  2 , 'val1')
, ( 5 ,  2 ,  2 , 'val2')
, ( 6 ,  3 ,  2 , 'val2')
, ( 7 ,  1 ,  3 , 'val1')
, ( 8 ,  2 ,  3 , 'val2')
, ( 9 ,  3 ,  3 , 'val3')
)
select g.id2, 
case 
 when exists (
 select id1, val from t where id2= 1  
   except 
 select id1, val from t where id2=g.id2
 ) 
 then 'нету' 
 else 'есть' 
end
from 
(
select distinct id2
from t
where id2!= 1 
) g
...
Рейтинг: 0 / 0
21.02.2008, 16:03
    #35148137
Rust()
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрый SQL или нудная хранимая процедура
а как сделать чтобы не получать выборку для каждого ID2 (есть или нету), а просто выдать , напрмер 1 или true если есть хотя бы одна выборка и 0 (или false), если нету
...
Рейтинг: 0 / 0
21.02.2008, 17:57
    #35148628
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрый SQL или нудная хранимая процедура
Rust()а как сделать чтобы не получать выборку для каждого ID2 (есть или нету), а просто выдать , напрмер 1 или true если есть хотя бы одна выборка и 0 (или false), если нету
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
with t (ID, ID1, ID2, VAL) as (
values 
  ( 1 ,  1 ,  1 , 'val1')
, ( 2 ,  2 ,  1 , 'val2')
, ( 3 ,  3 ,  1 , 'val3')
, ( 4 ,  1 ,  2 , 'val1')
, ( 5 ,  2 ,  2 , 'val2')
, ( 6 ,  3 ,  2 , 'val2')
, ( 7 ,  1 ,  3 , 'val1')
, ( 8 ,  2 ,  3 , 'val2')
, ( 9 ,  3 ,  3 , 'val3')
)
select case count( 1 ) when  0  then  0  else  1  end
from 
(
select distinct id2
from t
where id2!= 1 
) g
where not exists (
select id1, val from t where id2= 1  
  except 
select id1, val from t where id2=g.id2
) 
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / хитрый SQL или нудная хранимая процедура / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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