You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于MySQL多表关联查询实现用户预约状态展示需求

解决方案

我们可以通过LEFT JOIN关联三张表,结合CASE表达式判断当前用户是否已预约对应场次,从而输出对应的操作文本:

SELECT
    lc.name AS class_name,
    ls.session_timestamp,
    CASE
        WHEN lb.email IS NOT NULL THEN 'CANCEL'
        ELSE 'BOOK NOW'
    END AS action
FROM library_classes lc
INNER JOIN library_sessions ls ON lc.id = ls.class_id
LEFT JOIN library_bookings lb ON ls.id = lb.session_id AND lb.email = 'jose@gmail.com'
ORDER BY ls.session_timestamp;

语句说明:

  • 用INNER JOIN关联课程表和场次表,确保只获取有对应课程的有效场次;
  • 用LEFT JOIN关联预约表,并在关联条件中指定目标用户邮箱,这样能保留所有场次数据,同时标记出该用户已预约的记录;
  • 通过CASE表达式判断是否存在该用户的预约记录,输出对应的操作文本;
  • 按场次时间排序,保证结果顺序符合展示逻辑。

执行语句后将得到需求中的输出结果:

Tolkien | 2023-08-01 15:30:00 | CANCEL
CS Lewis | 2023-08-02 10:15:00 | BOOK NOW
Tolkien | 2023-08-04 09:30:00 | BOOK NOW

内容的提问来源于stack exchange,提问作者michaelmcgurk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 16:32:23