Я просто пробую некоторые упражнения с MYSQL. У меня есть набор данных, в котором я хотел бы получить имена клиентов, которые заказали два или более различных вида товаров, и сколько предметов каждого вида они купили.
В приведенном ниже запросе приводится строка для каждого имени. покупателя. Тем не менее, я также хочу показать, какие типы предметов они купили и сколько их. В идеале мне бы хотелось, чтобы для каждого покупателя было одинаковое количество строк, сколько разных предметов они купили.
SELECT firstname, familyname, description, quantity
FROM customers c
JOIN orders o ON o.custID = c.custID
JOIN lineitems l on o.orderID = l.orderID
JOIN items i on l.itemID = i.itemID
GROUP BY firstname
HAVING count(description)
Приведенный ниже запрос дает мне строку для каждого предмета, количество предметов, которое этот человек купил, и имя покупателя. Тем не менее, он не фильтрует клиентов, которые уже купили только один конкретный товар.
SELECT firstname, familyname, description, quantity
FROM customers c
JOIN orders o ON o.custID = c.custID
JOIN lineitems l on o.orderID = l.orderID
JOIN items i on l.itemID = i.itemID
WHERE EXISTS(
SELECT *
FROM customers
GROUP BY firstname
HAVING count(description) >= 2)
По сути, я хотел бы объединить оба подхода, когда для каждого покупателя имеется несколько строк, а также отфильтровать клиентов. который купил только один тип предмета.