Je fais ce type de requête de la manière suivante :
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';
Le GROUP BY
solution montré
par @najmeddine produit également la réponse souhaitée, mais elle ne fonctionne pas aussi bien sur MySQL. MySQL a du mal à optimiser GROUP BY
requêtes.
Vous devriez essayer les deux requêtes, en analysant l'optimisation avec EXPLAIN
, et exécutez également des tests et chronométrez les résultats en fonction du volume de données dans votre base de données.