首页 > 数据库 > mysql教程 > 如何从带有预订日志的数据库中检索未取消的预订?

如何从带有预订日志的数据库中检索未取消的预订?

Linda Hamilton
发布: 2025-01-23 19:37:09
原创
600 人浏览过

How to Retrieve Uncancelled Reservations from a Database with Reservation Logs?

识别数据库中的活动预订

本文演示了两种 SQL 查询方法,用于从包含 reservationreservation_log 表的数据库中检索未取消的预订。 仅当 change_type = 'cancel' 表中存在带有 reservation_log 的相应条目时,预订才会被视为已取消。

方法一:NOT IN子查询

此方法使用子查询来识别已取消的预订,然后将其从主查询的结果中排除:

SELECT *
FROM reservation
WHERE id NOT IN (
  SELECT reservation_id
  FROM reservation_log
  WHERE change_type = 'cancel'
);
登录后复制

内部查询选择与取消关联的所有 reservation_id 值。然后,外部查询返回 id 出现在此取消列表中的所有预订。

方法 2:LEFT JOIN 具有 IS NULL 条件

此方法使用 LEFT JOIN 来组合 reservationreservation_log 表。 JOIN 条件确保仅考虑取消。 WHERE 子句筛选未找到匹配取消的行:

SELECT r.*
FROM reservation r
LEFT JOIN reservation_log l ON r.id = l.reservation_id AND l.change_type = 'cancel'
WHERE l.id IS NULL;
登录后复制

LEFT JOIN 返回 reservation 表 (r) 中的所有行。 如果存在匹配的取消,则包含相应的reservation_log数据(l);否则,l.id 将是 NULLWHERE l.id IS NULL 条件过滤掉具有匹配取消的行,从而有效地隔离未取消的预订。 最终结果仅选择预订数据(r.*)。

两种方法实现相同的结果,提供未取消的预订列表。它们之间的选择通常取决于特定于数据库系统和数据量的性能考虑。

以上是如何从带有预订日志的数据库中检索未取消的预订?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板