MYSQL-对照其他表进行检查的查询(很难解释…)

MYSQL-对照其他表进行检查的查询(很难解释…),sql,mysql,select,Sql,Mysql,Select,我有一个查询,其中列出了订阅新闻稿试用版的电子邮件列表,试用期为30天。 $thirty = time() - 3024000; SELECT c.email FROM tbl_clients AS c JOIN tbl_clientoptions AS o ON o.client = c.id WHERE o.option = 'newsletter' AND c.datecreated > $thirty 我要做的是在同一个查询中进行检查,这样它也会返回超过

我有一个查询,其中列出了订阅新闻稿试用版的电子邮件列表,试用期为30天。

$thirty = time() - 3024000;

SELECT c.email 
  FROM tbl_clients AS c 
  JOIN tbl_clientoptions AS o ON o.client = c.id 
 WHERE o.option = 'newsletter' 
   AND c.datecreated > $thirty
我要做的是在同一个查询中进行检查,这样它也会返回超过30天的客户机,如果他们有tbl_clientoptions.option='trialoverride'(即,客户机选项表中值为“trialoverride”的一行)

TBL_客户
表格:

  • 身份证
  • 名字
  • 电子邮件
  • 日期创建
TBL_客户选项
表格:

  • 身份证
  • 客户
  • 选择权
    • 那么:

      SELECT c.email 
         FROM tbl_clients AS c JOIN tbl_clientoptions AS o
         ON o.client = c.id 
         WHERE (o.option = 'newsletter' AND c.datecreated > $thirty) 
           || o.option = 'trialoverride';
      

      通常只需一个
      条件即可,如果同一用户可以同时具有这两个条件,则添加一个
      不同的
      ,否则将其删除:

      SELECT DISTINCT c.email 
      FROM tbl_clients c 
       INNER JOIN tbl_clientoptions o ON (o.client = c.id) 
      WHERE
       (o.option = 'newsletter' AND c.datecreated < $thirty) OR
       (o.option = 'trial override' AND c.datecreated > $thirty);
      
      选择不同的c.email
      来自tbl_客户c
      内部连接tbl_客户端选项o ON(o.client=c.id)
      哪里
      (o.option=‘时事通讯’和c.datecreated<$三十)或
      (o.option=‘试验覆盖’和c.datecreated>$三十);
      
      听起来像是要将两个select语句结合在一起,第二个语句带有一个连接到TBL_ClientOptions选项选项表中有新闻稿、促销材料、smsalerts、monthlynewsletter等内容,还有一个trialoverride选项。根据勾选的选项,有多行。如果有一个客户端有时事通讯和sms警报,则将有两行。如果我们取消勾选某些内容,则删除一行。我要做的是选择所有勾选了“时事通讯”且未满30天的人,以及所有勾选了“时事通讯”且未满30天的人(如果他们勾选了“试用覆盖”)。我可能可以做两个查询,但我希望在一个中做。我想我尝试过这个,但它与另一个“选项”列冲突(即:行不能同时等于“新闻通讯”和“trialoverride”)对吗?抱歉,没有看到。我已经把它编辑成我认为应该有效的版本。基本上,将()移动了一点。