Обеспечивает вывод:
table 1
item group_id
123 aaaa
432 bbbb
534 aaaa
765 cccc
656 aaaa
656 cccc
111 cccc
group_id group_name
aaaa groupA
bbbb groupB
cccc groupC
у найти все группы, которые содержат как 765, так и 656 - в этом случае GroupC содержит оба этих значения.
Есть ли способ избежать множества вложенных запросов или операторов AND? Скажем, если в таблице 1 могут быть тысячи пар, и мне нужно найти группы, которые содержат весь список из 30 элементов, было бы некрасиво написать действительно большой запрос, чтобы ответить на вопрос.
Хотел бы я сказать «где в (765,656)», но пусть он ведет себя по-другому. Если бы было несколько предметов, которые можно было бы сопоставить, это было бы грязно.
SQL Fiddlehttp://sqlfiddle.com/#!9/6581eb/9
Пример данных (в случае, если SQL Fiddle по какой-то причине недоступен):
create table table1(itemID int,groupID varchar(4));
insert into table1(itemID,groupID)
values
(123,'aaaa')
,(432,'bbbb')
,(534,'aaaa')
,(765,'cccc')
,(656,'aaaa')
,(656,'cccc')
,(111,'cccc');
create table table2(groupID varchar(4),groupName varchar(6));
insert into table2(groupID,groupName)
values
('aaaa','groupA')
,('bbbb','groupB')
,('cccc','groupC');