Я всю ночь пытался заставить работать следующий запрос:
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 ч. (Сохраняется как ENUM «да», «нет» у нас.24 часа) И НЕ получал электронную почту в течение последних 24 часов (это сохраняется как TIMESTAMP в user.lastmail)
Любая помощь помешала бы мне вырвать мой собственный мозг через левую ноздрю!:)
Спасибо:)
Seb
Ух ты!Вы, ребята, великолепны!:) Перепробовал все предложения, но все они возвращают следующую ошибку:
1064 - у вас ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса, который нужно использовать рядом с «ИНТЕРВАЛ 1 ДЕНЬ»))) LIMIT 0, 30 'в строке 8
Я предполагаю, что ему есть чем занятьсяс помощью команды DATE_SUB, которой не нравится формат TIMESTAMP поля user.last_mail ... Может ли это быть правильным, и если да, то как мне это сделать?
Для ясности сценарий является частью страницы, которая получаетУвольняемый Хроном каждый час, что я сделал для меня и нескольких друзей.
Он проверяет Tesco Wines на наличие их «таинственного винного пакета» (потому что веб-дизайн всегда лучше с дешевым вином!)
Еслион доступен (что происходит только раз в неделю или около того), он отправляет по электронной почте кому-либо из базы данных пользователей, у которого для ЛИБО 24 часа установлено значение «нет» (то есть он отправляет их по электронной почте каждый час, пока продукт доступен) ИЛИ для параметра «24 часа установлено значение ДА»и не получил письмо за последние 24 часа
(отсюда и поле last_mail, в котором записывается TIMESTAMP, когда было отправлено последнее письмо)
Действительно признателенответы!
Себ:)