0

次の問題があります。

人々はサイトにタスクを投稿します。

人々が投稿したすべてのタスクは、次の構造を持つタスク テーブルに入れられます。

id
user_id
date_posted

そして、次のテーブルを持つユーザーテーブルがあります

id
first_name
email

1 週間以上タスクを投稿していない人のメールを受け取る必要がありますか? どうやってやるの?私は次のことを試しました:

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

しかし、それが正しい方法だとは思いません。私は何をすべきか?

4

2 に答える 2

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;

テストされていませんが、アイデアはわかります。

于 2012-07-26T16:03:05.530 に答える