Выбор записей с одним общим полем, и вторым по заданному набору.

Sergiooo
Дата: 23.01.2013 15:27:25
Ситуация следующая.
Есть таблица к примеру заполненная так
|id1 | id2|
----------
|1 | A|
|1 | B|
|1 | C|
|2 | A|
|2 | C|
|3 | A|
|3 | B|

Нужно выбрать все id1 у который есть в id2 A или С. Результатом в данном случае будет 1,2.
Для A или B будет 1,3.

Возможно ли написать такой запрос?
Гость333
Дата: 23.01.2013 15:57:01
Sergiooo,

select t.id1
from [таблица к примеру заполненная так] t
where t.id2 in ('A', 'C')
group by t.id1
having count(distinct t.id2) = 2
Sergiooo
Дата: 23.01.2013 16:29:06
Вообще нужно было найти ID1 где есть только и только нужные ID2.
Вышло вот так:
select t.id1
from test t
where (t.id2='A') or (t.id2='B')
group by t.id1
EXCEPT
select t.id1
from test t
where (t.id2<>'A') and (t.id2<>'B')
group by t.id1
iap
Дата: 23.01.2013 17:02:19
Sergiooo
Вообще нужно было найти ID1 где есть только и только нужные ID2.
Если не ошибаюсь, это называется "реляционное деление"
Или что-то похожее
Добрый Э - Эх
Дата: 24.01.2013 05:35:51
iap,

именно так оно и есть - реляционное деление в чистом виде.
iap
Дата: 24.01.2013 09:25:23
Добрый Э - Эх
iap,

именно так оно и есть - реляционное деление в чистом виде.
В таком случае поиск по форуму выдаст несколько тем,
да ещё с очень интересными ссылками внутри