我一直在努力使以下查询正常工作:
SELECT user.username, user.email, user.id, user.last_mail, us.24hr
FROM wine_users user, wine_subscriptions sub, wine_user_settings us
WHERE user.id = sub.user_id
AND us.id = user.id
AND sub.wine1 = 'yes'
AND user.receive_mail = 'yes'
AND if(24hr = 'yes') user.last_mail >= DATE_SUB (user.last_mail INTERVAL 1 DAY)
基本上,我有3个表,分别包含用户名(
wine_users
),订阅(wine_subscriptions
)和用户设置(user_settings
)我要选择的用户是在我们24小时内选择“否”或在我们24小时内选择“是”的用户(在我们24小时内存储为ENUM'是''否'),并且没有在持续24小时(此信息存储为TIMESTAMP,存储在user.lastmail中)
任何帮助都将阻止我从左鼻孔撕裂自己的大脑! :)
谢谢 :)
塞布
哇!你们真棒! :)尝试了所有建议,但它们均返回以下错误:
1064-您的SQL语法有误;检查手册
对应于您的MySQL服务器版本以使用正确的语法
第8行的“ INTERVAL 1 DAY)))LIMIT 0,30'附近
我猜想这与DATE_SUB命令有什么关系,而不是喜欢user.last_mail字段的TIMESTAMP格式...这可能是正确的,如果是的话,我该如何处理呢?
为了清楚起见,该脚本是页面的一部分,该页面每小时由chron触发,这是我为我和一些朋友所做的。它会检查Tesco Wines是否提供“神秘酒包”(因为廉价的葡萄酒总是比网页设计更好!)如果可用(每周仅发生一次),它将通过电子邮件发送给用户数据库中的任何人EITHER将24hr设置为“否”(即,在产品可用时每小时发送一次电子邮件),或者将24hr设置为“ YES”,并且在过去24小时内未收到电子邮件(因此,last_mail字段记录了发送上一封电子邮件时的时间戳记)
非常感谢您的回应!
塞伯:)
最佳答案
看看这是否有用。
SELECT user.username, user.email, user.id, user.last_mail, us.24hr
FROM wine_users user, wine_subscriptions sub, wine_user_settings us
WHERE user.id = sub.user_id
AND us.id = user.id
AND sub.wine1 = 'yes'
AND user.receive_mail = 'yes'
AND ( (24hr = 'yes' AND user.last_mail >= DATE_SUB (user.last_mail INTERVAL 1 DAY)) OR 24hr='no')