Как одним 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