Eseguo questo tipo di query nel modo seguente:
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';
Il GROUP BY
soluzione mostrato
di @najmeddine produce anche la risposta che desideri, ma non funziona altrettanto bene su MySQL. MySQL ha difficoltà a ottimizzare GROUP BY
domande.
Dovresti provare entrambe le query, analizzando l'ottimizzazione con EXPLAIN
, ed esegui anche alcuni test e cronometra i risultati in base al volume di dati nel tuo database.