MySQL-连接所有子记录都有值的记录
第1部分 假设我有一个订单表,每个订单有一个或多个分期付款 分期付款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
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
谢谢,那很快。我已经在问题中添加了第二部分,详细说明了我将如何处理这个问题。有什么想法吗?