首页 > 解决方案 > 在一个查询中检查多个表

问题描述

我想SELECT使用 PHP 从我的 MySQL 中获取数据,但该WHERE子句可能有点令人困惑。

基本上我想选择即将到来的约会,然后检查企业是否想要发送提醒,然后检查用户是否想要接收提醒。但我想在一个查询中完成所有这些。

这是我的表:

appointments
    - appointment_date
    - appointment_time
    - business_id
    - user_id

businesses
    - reminders_enabled

users
    - reminders_enabled

在选择正确的数据之前,我要执行以下步骤:

  1. SELECT * FROM appointments WHERE DATE(appointment_date) = CURDATE() AND appointment_time is within the next 1 hour

  2. 从上面从步骤#1中选择的数据中,我想对其进行过滤。我想要SELECT * FROM businesses WHERE business_id = business_id_from_step_1 AND reminders_enabled = 1

  3. 然后我想进一步过滤它。如果在第 2 步之后找到结果,请再次选择:SELECT * FROM users WHERE user_id = user_id_from_step_1 AND reminders_enabled = 1

之后就是这样。我怎样才能做到这一点?谢谢!

标签: mysqljoinselect

解决方案


像这样的东西应该工作。JOINs 按照您在步骤 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

推荐阅读