Как одним SQL запросом получить имена юзеров которые купили 3 и более разных товаров?

Имеются 3 таблицы:

goods (поля: id, model); 
users (поля: id, name);
purchases (поля: id, user_id, good_id);

как одним запросом получить имена юзеров которые купили 3 и более разных товаров?

P.S. товары хранятся в goods; покупки в purchases


Ответы (2 шт):

Автор решения: Aziz Umarov

Ну так как то

SELECT 
     users.id, -- на случай если имя одинаково
     users.name     
FROM 
    users
    INNER JOIN purchases
      ON purchases.user_id = users.id         
GROUP BY 
    users.id, 
    users.name
HAVING
   count(purchases.good_id) >= 3
→ Ссылка
Автор решения: Dmitriy Shaydurov

Нашел небольшую неточность в предыдущем решении нужно чтобы считались РАЗНЫЕ товары

SELECT 
     users.id, 
     users.name     
FROM 
    users
    INNER JOIN purchases
      ON purchases.user_id = users.id         
GROUP BY 
    users.id, 
    users.name
HAVING
   count(distinct(purchases.good_id)) >= 3
→ Ссылка