我以前在 stackoverflow 上得到了用户 JW 的很大帮助,我需要解决一个 SQL 查询。但是,自他最初的回答以来,要求发生了一些变化。
我现在需要为网站后端的管理员用户提供选择报告需要涵盖的天数的选项,而不是查找过去 30 天内的结果的查询,因此 30 天可以是任何给定的数字现在。
我有一个 php 脚本和文本条目,用户可以在其中输入所需的天数,并计算返回 x 天数的日期。然后将该日期存储在变量中。我们在其他报告中使用相同的方法,并且效果很好。
JW 制定的原始查询是:
SELECT c.customers_id
FROM customers c
INNER JOIN customers_info ci
ON c.customers_id = ci.customers_info_id
LEFT JOIN codes_redeem_history pc
ON c.customers_id = pc.customer_id
WHERE pc.customer_id IS NULL
GROUP BY c.customers_email_address
HAVING MAX(ci.customers_info_date_of_last_logon) <= subdate(now(),INTERVAL 30 DAY)
我现在需要使用以下内容:
WHERE ci.customers_info_date_of_last_logon >= '" . $ndate . "'
我不能把它代替 HAVING MAX 部分,因为它会创建一个 sql 语法错误
我确实尝试过:
WHERE pc.customer_id IS NULL
AND WHERE ci.customers_info_date_of_last_logon >= '" . $ndate . "'
GROUP BY c.customers_email_address
但它没有用。有关信息,如果我选择 a10 天报告,$ndate 将是 '20130301'
谢谢,史蒂夫