我有3张桌子。用户表。一张诗表。一张表,用于跟踪通过电子邮件发送给用户的诗歌。
tblUser | tblEmailed | tblPoems
------- | ----------- | --------
userid | userid | poemid
username | poemid | poemname
etc | date | etc
我想编写一个MySQL查询,选择一个今天没有通过电子邮件发送过诗歌的用户ID,并选择一个他们以前没有收到的poemid。
有人可以帮助我吗?
答案 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