两个表之间的SQL查询迭代

时间:2016-05-24 20:48:46

标签: sql

我很高兴使用SQL,你可以看到我对使用2个表的迭代产生怀疑。

事情就是这样:

我有两个表“UsersEmails”和“Sent_Emails”。

在“UsersEmail”中我拥有所有电子邮件(用户帐户),在“Sent_Emails”中,我有一段时间内发送的电子邮件,例如“TODAY”。

所以,我想知道我的“UsersEmail”表格中哪个电子邮件帐户发送了TODAY,哪些不是。

我通过迭代我的表“UsersEmail”中的每封电子邮件并在“Email_Sent”表上查看它而得到了一个想法,但我不知道该怎么做。

我希望你们能帮助我。

我最诚挚的问候。

4 个答案:

答案 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}}