I\'m having trouble coming up with a query that will find all customers who have purchased both PROD1 and PROD2.
Here\'s a pseudo-query that kind of looks like what
I do this type of query in the following way:
SELECT COUNT(DISTINCT t1.userid) AS user_count
FROM TRANSACTIONS t1
JOIN TRANSACTIONS t2 USING (userid)
WHERE t1.product_id = 'prod1'
AND t2.product_id = 'prod2';
The GROUP BY
solution shown by @najmeddine also produces the answer you want, but it doesn't perform as well on MySQL. MySQL has a hard time optimizing GROUP BY
queries.
You should try both queries, analyzing the optimization with EXPLAIN, and also run some tests and time the results given the volume of data in your database.