2014-10-31 29 views
0

部件記錄1MySQL的 - 加入所有子記錄有一個值

比方說,我有一個訂單表,每個訂單都有一個或多個分期付款。

分期付款

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,因爲其中一個分期付款具有NULL時間戳。

我能做到這一點的最有效方法是什麼?我真的不知道從哪裏開始,但我想我需要一些子查詢來處理數據。

PART 2

歸根結底,我想在這裏做的就是讓每個客戶有多少訂單具有傳遞第1部分測試的計數(只的訂單,所有分期有時間戳)我會將其與另一個值進行比較。

因此,一旦我有一個包含所有分期付款都有時間戳的所有訂單的結果集,我如何將這些分組進行分組以包含每個符合條件的客戶的計數?

回答

2
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 
+0

謝謝,這是快。我在這個問題中增加了第二部分,詳細說明了我要去哪裏。有任何想法嗎? – BadHorsie 2014-10-31 17:08:00

+0

我更新了答案 – 2014-10-31 17:54:05

0

試試這個:

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