mysql - 在一个查询中检查多个表
问题描述
我想SELECT
使用 PHP 从我的 MySQL 中获取数据,但该WHERE
子句可能有点令人困惑。
基本上我想选择即将到来的约会,然后检查企业是否想要发送提醒,然后检查用户是否想要接收提醒。但我想在一个查询中完成所有这些。
这是我的表:
appointments
- appointment_date
- appointment_time
- business_id
- user_id
businesses
- reminders_enabled
users
- reminders_enabled
在选择正确的数据之前,我要执行以下步骤:
SELECT * FROM appointments WHERE DATE(appointment_date) = CURDATE() AND appointment_time is within the next 1 hour
从上面从步骤#1中选择的数据中,我想对其进行过滤。我想要
SELECT * FROM businesses WHERE business_id = business_id_from_step_1 AND reminders_enabled = 1
然后我想进一步过滤它。如果在第 2 步之后找到结果,请再次选择:
SELECT * FROM users WHERE user_id = user_id_from_step_1 AND reminders_enabled = 1
之后就是这样。我怎样才能做到这一点?谢谢!
解决方案
像这样的东西应该工作。JOIN
s 按照您在步骤 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
推荐阅读
- javascript - 当输入值> 0 && value !== undefined 时,尝试删除 html 按钮标签上的禁用属性
- laravel - 电子邮件与使用 get 请求的路由一起使用,但电子邮件不会与 post 请求一起发送,并且没有错误,只是页面刷新
- openlayers - 我如何为移动设备添加自定义搜索
- c++ - 如何更改子类方法中的参数?
- javascript - 使用可观察和订阅
- node.js - MongoDB查询名称忽略尾随数字
- javascript - Flask 无法处理 ajax GET 请求中的 json 数据
- c# - Azure 函数不会创建 blob 元数据
- json.net - 更正与 Json.Net 一起使用的无效 json
- node.js - dynamo db local shell 不使用 docker 镜像列出表