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

Откуда:
Сообщений: 506
решение для MSSQL есть и работает как надо. А вот на Informix как такое сделать?
5 июл 18, 14:32    [21546157]     Ответить | Цитировать Сообщить модератору
 Re: Informix v12 - Как одним запросом сделать такую выборку  [new]
Blackmore
Member

Откуда:
Сообщений: 506
create table t1(id int, name varchar(10), ssn int)
create table t1_exclusive(id int)
insert into t1(id,name,ssn) values 
 (1,'A',111)
,(2,'B',222)
,(3,'C',111)
,(4,'D',333)
,(5,'E',444)
,(6,'F',555)
,(7,'G',222)
,(8,'H',777)
,(9,'I',888)
,(10,'J',999)

insert into t1_exclusive(id) values(2)



Теперь select с where t1.ssn=222 должен вернуть:

id name ssn
2 B 222

с where t1.ssn=111 должен вернуть:

id name ssn
1 А 111
3 С 111

А без фильтрации по ssn должен вернуть все записи из t1. Как такое сделать одним запросом (можно с подзапросами)?
5 июл 18, 14:33    [21546161]     Ответить | Цитировать Сообщить модератору
 Re: Informix v12 - Как одним запросом сделать такую выборку  [new]
Daugava
Member

Откуда: Riga-Kiev-Gurzuf
Сообщений: 718
Криво косо, но будет работать и в MSSQL и в Informix

select t.* 
from	t1 t,
		t1_exclusive e
where	t.id = e.id
and		t.ssn = '111'
union
select t.* 
from	t1 t
where	t.ssn = '111'
and not exists
(select 1
from	t1_exclusive e,
		t1 t1
where	t1.ssn = t.ssn
and		e.id = t1.id
)
6 сен 18, 19:59    [21667443]     Ответить | Цитировать Сообщить модератору
Все форумы / Informix Ответить