Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 带小计和限制的一对多查询_Mysql_One To Many - Fatal编程技术网

Mysql 带小计和限制的一对多查询

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

要求:选择从2011年9月到当前日期有5张或5张以上发票、总金额超过3000美元的交易记录的客户

数据库管理系统:MySQL 5.6

表:

  • 客户:customerID(…)
  • 发票:客户ID、发票号、订单日期、订单总数(…)
我写了几个MySQL查询。下面将显示与工作“最接近”的一个。结果有两个问题:

  • 它查看每个客户的所有发票的总数,而不仅仅是日期范围内的发票

  • 它会提取一些(但不是全部)超出日期范围的记录

  • 以下是查询:

    #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。您的解决方案现在非常有效。非常感谢!