Есть таблица
item_id, division_id
1 1
1 2
2 1
3 1
4 1
Как выбрать item_id, которые идут и к division_id= 1 и к division_id= 2? Т.Е. должны быть уникальные item_id, которые относятся только к 2 или более разделам?
С помощью DISTINCT можно выбрать уникальные значения:
SELECT DISTINCT(`item_id`) FROM `table` WHERE `division_id` IN(1,2)
Группируем по item_id, считаем во сколько division_id входит каждый, берём только те, что входят в 2 и более.
SELECT item_id
FROM `table`
GROUP BY item_id
HAVING COUNT(division_id) > 1
Для выборки по конкретным division_id можно добавить
WHERE division_id IN (1, 2)
Метод грубой силы:
SELECT item_id FROM `table` t
WHERE EXISTS(SELECT * FROM `table` a where a.item_id=t.item_id AND a.division_id IN (1,2,3,4,5))
AND EXISTS(SELECT * FROM `table` a where a.item_id=t.item_id AND a.division_id = 6)
Сборка персонального компьютера от Artline: умный выбор для современных пользователей