MYSQL-对照其他表进行检查的查询(很难解释…)
我有一个查询,其中列出了订阅新闻稿试用版的电子邮件列表,试用期为30天。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 我要做的是在同一个查询中进行检查,这样它也会返回超过
$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”)对吗?抱歉,没有看到。我已经把它编辑成我认为应该有效的版本。基本上,将()移动了一点。