MySQL日期范围获取的结果不正确-查询忽略指定的范围

MySQL日期范围获取的结果不正确-查询忽略指定的范围,mysql,date,date-range,Mysql,Date,Date Range,我有一个查询,涉及在30天内搜索数据库。输出正确和输出错误的查询如下: CORRECT RESULTS: SELECT affiliates.member_id, IFNULL( COUNT(orders.deal_id) , 0 ) AS deals_count, IFNULL( SUM(orders.quantity) , 0 ) AS deals_quanity FROM affiliates LEFT JOIN deals ON affiliates.member

我有一个查询,涉及在30天内搜索数据库。输出正确和输出错误的查询如下:

CORRECT RESULTS:
SELECT
    affiliates.member_id,
    IFNULL( COUNT(orders.deal_id) , 0 ) AS deals_count,
    IFNULL( SUM(orders.quantity) , 0 ) AS deals_quanity
FROM affiliates
LEFT JOIN deals ON affiliates.member_id = deals.member_id
LEFT JOIN orders ON deals.deal_id = orders.deal_id
LEFT JOIN customers_orders_link ON orders.order_id = customers_orders_link.order_id
    AND DATE(customers_orders_link.datetime) BETWEEN '2011-06-01' AND '2011-07-01'
    AND customers_orders_link.order_status = 'Delivered'
GROUP BY affiliates.member_id;
预期和收到:(正确)

错误结果:

//Notice the change in the date range

SELECT
    affiliates.member_id,
    IFNULL( COUNT(orders.deal_id) , 0 ) AS deals_count,
    IFNULL( SUM(orders.quantity) , 0 ) AS deals_quanity
FROM affiliates
LEFT JOIN deals ON affiliates.member_id = deals.member_id
LEFT JOIN orders ON deals.deal_id = orders.deal_id
LEFT JOIN customers_orders_link ON orders.order_id = customers_orders_link.order_id
    AND DATE(customers_orders_link.datetime) BETWEEN '2011-10-01' AND '2011-10-31'
    AND customers_orders_link.order_status = 'Delivered'
GROUP BY affiliates.member_id
预期:

MemberID    COUNT   SUM
1           0       0
2           0       0
但我收到:(输出不正确)

第一个查询生成正确的结果,而第二个查询生成错误的结果。即使我使用过去的日期作为范围,我仍然会收到相同的错误输出。这就好像查询完全忽略了日期范围规范一样。因此,忽略日期范围规范的情况似乎就是问题所在

如何使查询“查看”和“遵守”日期范围规范,并实际收到上面列出的第二次查询的预期输出

编辑1:

//Table: Orders
order_id        deal_id quantity        price
1               1       2               40.00
1               2       1               15.00
2               1       1               20.00
3               9       1               5.00
4               1       2               40.00
4               9       2               10.00
5               1       1               20.00
5               9       1               5.00
6               1       2               40.00
6               9       2               10.00
7               1       1               20.00
8               11      1               1.00


//Table: customers_orders_link
order_id        customer_id     order_status    datetime
1               4               Cancelled       2011-06-05 20:26:45
2               4               Delivered       2011-06-05 20:38:28
3               4               Pending Payment 2011-06-05 20:56:50
4               4               Pending Payment 2011-06-09 17:03:08
5               4               Pending Payment 2011-06-09 17:12:23
6               4               Pending Payment 2011-06-09 17:19:57
7               4               Pending Payment 2011-06-09 17:40:59
8               4               Pending Payment 2011-06-10 03:55:17

我不知道你的数据是什么样子的,但我怀疑你的
左加入客户\u订单\u链接
是罪魁祸首。如果您只想在满足该表的条件时计算COUNT()和SUM(),那么它应该是一个标准的
联接
,而不是
左联接
,我自己用一种完全不同的方法解决了它。

感谢您的回复,我已经添加了必要的表结构。加入客户订单链接是必要的,因为它是唯一一个给我们“订单状态”的表,我们只需要计算和汇总已交付的订单。此外,我们需要显示所有的会员ID是否有任何交易购买。因此,我们查询附属公司表作为主表,并左键联接其他表,因为它们可能/可能没有与交易相关的数据。请看一下编辑1,也许会更清楚?
MemberID    COUNT   SUM
1           11      16
2           0       0
//Table: Orders
order_id        deal_id quantity        price
1               1       2               40.00
1               2       1               15.00
2               1       1               20.00
3               9       1               5.00
4               1       2               40.00
4               9       2               10.00
5               1       1               20.00
5               9       1               5.00
6               1       2               40.00
6               9       2               10.00
7               1       1               20.00
8               11      1               1.00


//Table: customers_orders_link
order_id        customer_id     order_status    datetime
1               4               Cancelled       2011-06-05 20:26:45
2               4               Delivered       2011-06-05 20:38:28
3               4               Pending Payment 2011-06-05 20:56:50
4               4               Pending Payment 2011-06-09 17:03:08
5               4               Pending Payment 2011-06-09 17:12:23
6               4               Pending Payment 2011-06-09 17:19:57
7               4               Pending Payment 2011-06-09 17:40:59
8               4               Pending Payment 2011-06-10 03:55:17