Просто альтернатива коду rkosegi,
BEGIN
.. Declare statements ..
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
.. set any flags etc eg. SET @flag = 0; ..
ROLLBACK;
END;
START TRANSACTION;
.. Query 1 ..
.. Query 2 ..
.. Query 3 ..
COMMIT;
.. eg. SET @flag = 1; ..
END
SELECT * FROM appointments
WHERE DATE(appointment_date) = CURDATE()
AND appointment_time BETWEEN NOW() AND NOW() + INTERVAL 1 HOUR
AND business_id in (SELECT business_id FROM businesses WHERE reminders_enabled=1)
AND user_id in (SELECT user_id FROM users WHERE reminders_enabled=1)
Нечто подобное должно работать. Фильтры JOIN
выполняют фильтрацию, как описано в шагах 1-3:
SELECT *
FROM appointments a
JOIN businesses b ON b.business_id = a.business_id AND b.reminders_enabled = 1
JOIN users u ON u.user_id = a.user_id AND u.reminders_enabled = 1
WHERE DATE(a.appointment_date) = CURDATE() AND
a.appointment_time BETWEEN NOW() AND NOW() + INTERVAL 1 HOUR