我很高兴使用SQL,你可以看到我对使用2个表的迭代产生怀疑。
事情就是这样:
我有两个表“UsersEmails”和“Sent_Emails”。
在“UsersEmail”中我拥有所有电子邮件(用户帐户),在“Sent_Emails”中,我有一段时间内发送的电子邮件,例如“TODAY”。
所以,我想知道我的“UsersEmail”表格中哪个电子邮件帐户发送了TODAY,哪些不是。
我通过迭代我的表“UsersEmail”中的每封电子邮件并在“Email_Sent”表上查看它而得到了一个想法,但我不知道该怎么做。
我希望你们能帮助我。
我最诚挚的问候。
答案 0 :(得分:0)
你提供的关于你的桌子的信息很少,但据说你可以这样写:
今天发送:
select * from UsersEmail e
where not exists (select 1 from Sent_Emails where userEmailID=e.ID and
TRUNC(emailDate)=TRUNC(sysdate))
今天没有发送:
openssl req -x509 -nodes -sha1 -newkey rsa:2048 -out cacert.pem -outform PEM -days 1825
答案 1 :(得分:0)
今天发送的电子邮件
SELECT * FROM UserEmail as E
INNER JOIN sentEmails AS s ON s.userEmailID = e.UserEmailId
WHERE s.date = YOUR_TARGET_DATE
今天没有发送的电子邮件
SELECT * FROM UserEmail as E
INNER JOIN sentEmails AS s ON s.userEmailID = e.UserEmailId
WHERE s.date <> YOUR_TARGET_DATE
答案 2 :(得分:0)
你真的想跟踪发送的邮件而无法发送? 如果我是你,我会在我的表“Sent_Emails”日期时间添加一列,并设置用户发送邮件时的发送日期, 在那种情况下,
- MAILS SENT:SELECT * FROM SEND_MAILS WITH(NOLOCK)INNER JOIN USEREMAILS WITH(NOLOCK)ON SEND_MAILS.USERMAILID = USEREMAILS.USERMAILID,其中SEND_MAILS.SENDDATE不为空
- MAILS NOT - SENT:SELECT * FROM SEND_MAILS WITH(NOLOCK)INNER JOIN USEREMAILS WITH(NOLOCK)ON SEND_MAILS.USERMAILID = USEREMAILS.USERMAILID,其中SEND_MAILS.SENDDATE为空
使用此信息,您可以报告每日发送的邮件。 喜欢
SELECT * FROM SEND_MAILS WITH(NOLOCK)INNER JOIN USEREMAILS WITH (NOLOCK)ON SEND_MAILS.USERMAILID = USEREMAILS.USERMAILID WHERE SEND_MAILS.SENDDATE ='2016-05-24'
答案 3 :(得分:0)
我喜欢用英语重复问题,然后编写SQL。您想要将针对给定userEmailID发送的最后一封电子邮件与今天的开始进行比较。下面的子查询为您提供了给定userEmailID发送的最后一封电子邮件。对于今天发送的案例陈述将是1,对于从未发送或最后一封早于今天发送的电子邮件,则为0。
{{1}}