我一直在努力使以下查询正常工作:

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')

10-05 20:28
查看更多