MySQL-连接所有子记录都有值的记录

MySQL-连接所有子记录都有值的记录,mysql,sql,join,Mysql,Sql,Join,第1部分 假设我有一个订单表,每个订单有一个或多个分期付款 分期付款 id | order_id | customer_id | timestamp ------------------------------------------------------- 1 | 1 | 5 | 2014-10-31 00:00:00 2 | 1 | 5 | NULL 3 | 1

第1部分

假设我有一个订单表,每个订单有一个或多个分期付款

分期付款

id  |  order_id  |  customer_id  |  timestamp
-------------------------------------------------------
1   |      1     |       5       |  2014-10-31 00:00:00
2   |      1     |       5       |  NULL
3   |      1     |       5       |  2014-10-31 00:00:00
4   |      2     |       8       |  2014-10-31 00:00:00
5   |      2     |       8       |  2014-10-31 00:00:00
6   |      2     |       8       |  2014-10-31 00:00:00
7   |      3     |       5       |  2014-10-31 00:00:00
我想检索所有分期付款都有时间戳的订单,这些时间戳中最大的一个在最后X天内

在上表中,我应该检索订单ID 2和3,但不是1,因为其中一个分期具有空时间戳

我能做到这一点的最有效方式是什么?我真的不知道从哪里开始,但我想我需要某种子查询来稍后处理数据

第二部分

最后,我在这里要做的是计算每个客户通过第1部分测试的订单数量(只有所有分期付款都有时间戳的订单),我将把它与另一个值进行比较

因此,一旦我有一个包含所有订单的结果集,其中所有分期付款都有一个时间戳,我如何对这些结果集进行分组,以包括每个符合条件的客户的计数

select order_id
from order
group by order_id
having sum(timestamp is null) = 0
关于问题的第二部分:

select customer_id, count(distinct order_id) as unique_orders
from order
where timestamp is not null
group by customer_id
试试这个:

SELECT count(*), customer_id
FROM order
WHERE timestamp is not null
GROUP BY customer_id

谢谢,那很快。我已经在问题中添加了第二部分,详细说明了我将如何处理这个问题。有什么想法吗?