SQL forma eficiente de unirse a una tabla donde existen todos los valores
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
Quiero encontrar todos los grupos que contienen 765 y 656, en este caso, GroupC contiene ambos valores.
¿Hay alguna forma de evitar un montón de consultas anidadas o declaraciones AND? Digamos si la tabla 1 puede tener miles de emparejamientos y tengo que encontrar los grupos que contienen una lista de 30 elementos. Sería feo escribir una consulta realmente grande para responder la pregunta.
Desearía poder decir "where in (765,656)" pero que se comporte de manera diferente. Si hubiera un montón de elementos para combinar, se volvería desordenado.
SQL Fiddlehttp: //sqlfiddle.com/#! 9 / 6581eb / 9
Datos de muestra (en caso de que SQL Fiddle sea inaccesible por algún motivo):
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');