需要SQL帮助 - 跟踪已发送的电子邮件

时间:2017-09-16 22:57:27

标签: mysql sql

我有3张桌子。用户表。一张诗表。一张表,用于跟踪通过电子邮件发送给用户的诗歌。

tblUser  | tblEmailed  | tblPoems
-------  | ----------- | --------
userid   | userid      | poemid
username | poemid      | poemname
etc      | date        | etc

我想编写一个MySQL查询,选择一个今天没有通过电子邮件发送过诗歌的用户ID,并选择一个他们以前没有收到的poemid。

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

您需要做的第一件事是确定今天尚未通过电子邮件发送的用户。为此,您可以使用以下内容:

SELECT u.userid FROM tblUser u LEFT JOIN tblemailed e on e.userid = u.userid WHERE e.date == CURDATE() AND COALESCE(e.poemid, '') == '' LIMIT 1

然后我们需要user_id才能找到他们尚未收到的诗:

SELECT p.poemid FROM tblPoems p WHERE p.poemid NOT IN (SELECT poemid FROM tblEmailed WHERE userid == user_id) LIMIT 1

其中user_id是第一个查询的用户。

答案 1 :(得分:0)

在我意识到我不能用一个查询后,我决定采用这个:

SELECT * FROM tblUser U 
LEFT JOIN tblEmailed E ON E.userid = U.userid AND E.date = CURDATE()
WHERE E.userid IS NULL 
LIMIT 1

SELECT * FROM tblPoems P 
LEFT JOIN tblEmailed E ON E.poemid = P.poemid AND E.userid = :userid
WHERE E.poemid IS NULL 
LIMIT 1