Mysql 带小计和限制的一对多查询
要求:选择从2011年9月到当前日期有5张或5张以上发票、总金额超过3000美元的交易记录的客户 数据库管理系统:MySQL 5.6 表:Mysql 带小计和限制的一对多查询,mysql,one-to-many,Mysql,One To Many,要求:选择从2011年9月到当前日期有5张或5张以上发票、总金额超过3000美元的交易记录的客户 数据库管理系统:MySQL 5.6 表: 客户:customerID(…) 发票:客户ID、发票号、订单日期、订单总数(…) 我写了几个MySQL查询。下面将显示与工作“最接近”的一个。结果有两个问题: 它查看每个客户的所有发票的总数,而不仅仅是日期范围内的发票 它会提取一些(但不是全部)超出日期范围的记录 以下是查询: #Customers with 5 or more invoices To
- 客户:customerID(…)
- 发票:客户ID、发票号、订单日期、订单总数(…)
#Customers with 5 or more invoices Totaling more than $3000 From Sept 2011 to current
SELECT distinct c2.customerID,c2.firstname,c2.lastname,c2.company,c2.address,c2.address2,c2.city,c2.state,c2.country,c2.phone,c2.email,SUM(c1.order_total)
FROM
customers c2 LEFT JOIN invoice c1
ON c2.customerID = c1.customerID
AND ((date(c1.order_date)) between '2011-09-01' and date(now()))
GROUP BY
c1.customerID
HAVING
COUNT(c1.invoice_no)>=7 and sum(c1.order_total) >=3000
任何帮助都将不胜感激
谢谢。这应该可以做到:
select c.*, SUM(i.order_total) total, COUNT(*) order_count
FROM customers c
JOIN invoice i ON c.customerID = i.customerID
WHERE i.order_date >= '2011-09-01'
GROUP BY c.customerID
HAVING order_count >= 5 and total > 3000
闻起来像作业……擤鼻涕。你的嗅觉不灵敏了。我们刚刚发布了一个软件升级版,希望与一组精选人员联系,为他们提供特别优惠。感谢Barmar的快速响应。检查了一些随机记录。其中一家总共有2990张,但发票数量是正确的。其中一个总共有3300张发票,但只有3张。我不明白这是怎么回事,除非你将
和更改为或。你能用SQLFIDLE演示这个问题吗?好的。修好了。我需要添加和I.invoice_状态,如“%approved%”,以处理各种approved stati。您的解决方案现在非常有效。非常感谢!