2012-11-10 38 views
0
SELECT users.email FROM users 
INNER JOIN orders 
ON orders.user_id = users.id 
WHERE orders.status = 'new' 
AND orders.date_created > three months back? 

我想抓取所有用戶在未來3個月內未在我的網站上下單的電子郵件。所以,如果3個月內沒有訂單,請抓住電子郵件。MySQL:在三個月內抓取並且沒有抓取行

date_created是類型TIMESTAMP。所以一個例子是:2012-11-10 23:54:20

另外我想要一個查詢抓取用戶的電子郵件誰沒有做任何訂單(訂單表中沒有行)?

我試着用:

SELECT users.email FROM users 
    WHERE users.id NOT IN (select user_id from orders where user_id = users.id and orders.status = 'new') 

但似乎搶用命令的用戶呢?

回答

1
  1. 我想抓住那些尚未從今天起3個月內我的網站上作出的命令,所有用戶的電子郵件。

    集團的訂單由用戶和過濾結果爲那些最近的訂單超過3個月前:

    SELECT users.email 
    FROM  users JOIN orders ON orders.user_id = users.id 
    GROUP BY orders.user_id 
    HAVING MAX(orders.date_created) < CURRENT_DATE - INTERVAL 3 MONTH; 
    
  2. 此外,我想一個查詢抓住用戶的電子郵件誰根本沒有任何訂單(訂單表中沒有行)?

    做一個外連接和過濾器落在路口以外記錄:

    SELECT users.email 
    FROM  users LEFT JOIN orders ON orders.user_id = users.id 
    WHERE orders.user_id IS NULL