2012-07-26 35 views
0

我遇到以下問題。獲取超過1周以上的人的電子郵件

人們在網站上發佈任務。

所有的人崗任務進入任務表結構如下:

id 
user_id 
date_posted 

,有一個用戶表如下表

id 
first_name 
email 

我需要的郵件與沒有發佈任務超過一週的人?我怎樣才能做到這一點?我試過以下內容:

SELECT distinct u.id, u.email FROM user as u WHERE id IN (SELECT user_id FROM task WHERE paid = 1 AND DATE_ADD(CURDATE(), INTERVAL -7 DAY) <= `date_posted` AND `date_posted` < DATE_ADD(CURDATE(), INTERVAL -6 DAY)) AND role = 0 

但我不認爲這是正確的路要走。我該怎麼辦?

回答

0

嘗試此查詢

SELECT u.id, u.email 
FROM user as u WHERE id NOT IN (/* select users who posted */ 
    SELECT distinct user_id FROM task 
    WHERE paid = 1 AND DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= `date_posted` 
) AND role = 0; 

未經測試,但你的想法。

0

試試這個

SELECT DISTINCT u.id, u.email 
FROM (
     SELECT t.user_id AS user_id 
     FROM task t 
     WHERE DATE(t.date_posted) > DATE_SUB(CURDATE(), INTERVAL 7 DAY) 
    ) AS t 
RIGHT JOIN USER u ON u.id = t.user_id 
WHERE t.user_id IS NULL 
相關問題