Я интерпретирую ваш вопрос как:
Сколько раз группа Ормид имеет элемент itemid 12 или 99 в сочетании с itemid 22 или 57 ..
ЗначениеОрмидная группа должна иметь либо 12 и 22, либо 12 и 57, либо 99 и 22, либо 99 и 27 (по крайней мере .. 12,22,57 и т. д. также будет разрешено).На простом английском языке это может быть выражено как «Сколько раз кто-то покупал (клавиатуру или мышь) в сочетании с (карта памяти или картридж принтера)» - чтобы получить специальное предложение, кто-то должен купить хотя бы одинэлемент из группы 1 и один элемент из группы 2
Много способов сделать, вот один из них:
SELECT COUNT(distinct t_or_nn.ormid) FROM
(SELECT ormid FROM orders WHERE itemid in (12,99)) t_or_nn
INNER JOIN
(SELECT ormid FROM orders WHERE itemid in (22,57)) tt_or_fs
ON t_or_nn.ormid = rr_or_fs.ormid
Как это работает:
Два подзапроса;один тянет список всех ормид, имеющих 12 или 99. Другой тянет список всех ормид, имеющих 22 или 57.
Когда эти списки объединяются, только равные ормиды будутвыжить, чтобы стать результатом объединения
Таким образом, мы получаем список только тех ормид, которые имеют 12 или 99, в сочетании с 22 или 57. Считая это (отчетливо, чтобы предотвратить ормиду с12,99,22 считается как 2, или ормида из 12,22,57,99 элементов считается как 4) дает наш ответ.
Если вам нужно больше подробностей о том, почему наличие ормиды с предметами 12, 99,22,57 приводит к подсчету 4, дайте мне знать.Я не стану сразу говорить о декартовых произведениях, как вы, возможно, уже знаете ..
Есть несколько способов решения таких проблем, я выбрал этот способ, поскольку его довольно легко объяснить, потому чтологика запроса довольно хорошо согласована с тем, как человек может думать об этом