【发布时间】:2019-10-08 11:01:56
【问题描述】:
我只是在尝试使用 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)
基本上,我想结合这两种方法,其中每个客户的特定商品有多行,同时还过滤掉只购买一种商品的客户。
【问题讨论】:
-
您使用的是哪个版本的 MySQL?请添加一些示例数据和预期输出。