2011-12-21 2 views
0

У меня есть очень простую таблицу собственности вещь с этими двумя столбцами:Поиск элементов в таблице, которые удовлетворяют условию частоты подмножества?

UserID, ItemID 

Существует индекс на UserID, но не ItemID.

У меня есть набор S из 10-40 конкретных ItemID s (в моих запросах они представляют собой только целые числа с разделителями-запятыми).

Я хочу, чтобы найти все UserID S, которые владеют по крайней мере X (различных ItemID ы) элементов в S.

Я использую MSSQL, если это имеет значение. Можно ли это сделать эффективно?

ответ

3
select UserID 
from Ownership 
where ItemID in (1,2,3,4,5,...) --your list of ItemIDs 
group by UserID 
having count(distinct ItemID) >= 3 --the minimum # of distinct items required 
+0

Это изящное решение, которое я искал. Благодаря! –

+0

Happy to help - sometinmes SQL почти читается как английский. – RedFilter

+0

@RedFilter: Согласен. Вот почему он [первоначально назывался SEQUEL] (http://en.wikipedia.org/wiki/SQL#History) - структурированный английский язык QUEry. –

Смежные вопросы