Tego typu zapytania wykonuję w następujący sposób:
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';
GRUPA WG
rozwiązanie pokazano
@najmeddine również daje odpowiedź, której potrzebujesz, ale nie działa tak dobrze na MySQL. MySQL ma trudności z optymalizacją GROUP BY
zapytania.
Powinieneś wypróbować oba zapytania, analizując optymalizację za pomocą EXPLAIN
, a także uruchom kilka testów i zmierz czas wyników, biorąc pod uwagę ilość danych w Twojej bazie danych.