Помогите написать запрос
От: Аноним  
Дата: 12.02.10 07:50
Оценка:
Подскажите как построить запрос

есть например таблица (оба поля типа varchar)
id | value
--+------
1 A
1 B
2 A
3 A
3 B
3 C

Необходимо вывести все значения id для некоторого заданного у которого набор значений value не меньше чем у заданного

например если задано id = '1'

то результат будет

id
--
3

В этом случае ему соотв. значения 'A' и 'B' в поле value. Результат запроса с одной записью id = '3', так как в таблице есть значения value 'A 'и 'B' c id = '3'

для id = '2' соответственно

id
--
1
3

для трех пустой результат
Re: Помогите написать запрос
От: VladimirMA  
Дата: 12.02.10 08:07
Оценка: +1
Здравствуйте, Аноним, Вы писали:

"у которого набор значений value не меньше чем у заданного"
это в смысле набор значений одного входит в другой набор
или кол-во или еще как
не ясненько
Re: Помогите написать запрос
От: Plague Россия  
Дата: 12.02.10 12:53
Оценка: 1 (1)
Вроде все просто... Первое, что пришло в голову:

Тестовая таблица:
create table TESTTABLE
(
  RN    NUMBER not null,
  ID    NUMBER,
  VALUE VARCHAR2(1)
);

alter table TESTTABLE add constraint PKEY primary key (RN);
create unique index IDX1 on TESTTABLE (ID, VALUE);

insert into TESTTABLE (RN, ID, VALUE) values (1, 1, 'A');
insert into TESTTABLE (RN, ID, VALUE) values (2, 1, 'B');
insert into TESTTABLE (RN, ID, VALUE) values (3, 2, 'A');
insert into TESTTABLE (RN, ID, VALUE) values (4, 3, 'A');
insert into TESTTABLE (RN, ID, VALUE) values (5, 3, 'B');
insert into TESTTABLE (RN, ID, VALUE) values (6, 3, 'C');
commit;


Запрос, где
select id
  from testtable
 group by id
having count(value) > (select count(value) from testtable where id = :MyId)

где MyId — заданный ключ.

ЗЫ: Т.к. иное не указано, допустим, что СУБД Oracle
Re[2]: Помогите написать запрос
От: Аноним  
Дата: 12.02.10 14:10
Оценка:
Здравствуйте, Plague, Вы писали:

P>Вроде все просто... Первое, что пришло в голову:


P>Тестовая таблица:

P>
P>create table TESTTABLE
P>(
P>  RN    NUMBER not null,
P>  ID    NUMBER,
P>  VALUE VARCHAR2(1)
P>);

P>alter table TESTTABLE add constraint PKEY primary key (RN);
P>create unique index IDX1 on TESTTABLE (ID, VALUE);

P>insert into TESTTABLE (RN, ID, VALUE) values (1, 1, 'A');
P>insert into TESTTABLE (RN, ID, VALUE) values (2, 1, 'B');
P>insert into TESTTABLE (RN, ID, VALUE) values (3, 2, 'A');
P>insert into TESTTABLE (RN, ID, VALUE) values (4, 3, 'A');
P>insert into TESTTABLE (RN, ID, VALUE) values (5, 3, 'B');
P>insert into TESTTABLE (RN, ID, VALUE) values (6, 3, 'C');
P>commit;
P>


P>Запрос, где

P>
P>select id
P>  from testtable
P> group by id
P>having count(value) > (select count(value) from testtable where id = :MyId)
P>

P>где MyId — заданный ключ.

P>ЗЫ: Т.к. иное не указано, допустим, что СУБД Oracle


Спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.