2014-01-24 82 views
0

也許這聽起來很簡單,但問題是。MySQL的 - 發現沒有活躍用戶

我有誰可以添加步驟,每次他們去散步時間的用戶。每次他們記錄步驟時,都會在表格中添加一個新條目。報名表架構是:
ID,USER_ID,步驟,DATE_CREATED
的想法是讓這些已經開始添加步驟的用戶,但由於某種原因,他們並沒有積極的特定日子。
過程可以看看(每天),如:1
日:用戶添加步驟(上午)
用戶添加步驟(晚上)
第2天:用戶不添加任何
第3天:用戶添加步驟
第4天:用戶未添加任何東西
。 。 。 11
日:用戶不添加任何
系統會觸發提醒該用戶
12日:用戶不添加任何
系統將不會觸發提醒,因爲它應該只有一次

我的問題是,我可以在一個查詢中實現這一點,並且沒有郵件已經發出的標誌嗎?

我的想法是,從條目表拉USER_ID的,並檢查他們在過去7天添加任何東西,但如何擺脫掉那些誰一直沒有生效超過7天。

把所有用戶:

SELECT 
    DISTINCT(user_id) 
FROM 
    entries 

拉活躍用戶在過去7天:

SELECT 
    DISTINCT(user_id) 
FROM  
    entries 
WHERE 
    date_created BETWEEN '2014-01-17' AND NOW() 
ORDER BY 
    date_created DESC 

任何建議表示讚賞(也許是在我的頭長,我在複雜它)。

謝謝。

回答

1

這個查詢應該這樣做。方便地保存在你的「一攬子技巧」中。

SELECT u.user_name, 
    FROM users AS u 
LEFT OUTER 
    JOIN entries AS e 
    ON e.user_id = u.user_id 
    AND e.date_created >= CURRENT_DATE - INTERVAL 7 DAY 
WHERE e.user_id IS NULL 

在查詢中,左連接讓你比賽想找到。因此您感興趣的條件(日期範圍)進入ON子句。 WHERE子句限制了不匹配的行(在這種情況下,所有不匹配的行會返回null從加入

一些參考: When to use a left outer join?

+0

好主意,外連接,並得到其中user_id是空我要去。現在就進行測試。 – user3233563