首頁 > 資料庫 > mysql教程 > 如何從有預訂日誌的資料庫中檢索未取消的預訂?

如何從有預訂日誌的資料庫中檢索未取消的預訂?

Linda Hamilton
發布: 2025-01-23 19:37:09
原創
528 人瀏覽過

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

辨識資料庫中的活動預訂

本文示範了兩種 SQL 查詢方法,用於從包含 reservationreservation_log 表格的資料庫中檢索未取消的預訂。 只有當 change_type = 'cancel' 表中存在帶有 reservation_log 的相應條目時,預訂才會被視為已取消。

方法一:NOT IN子查詢

此方法使用子查詢來識別已取消的預訂,然後將其從主查詢的結果中排除:

<code class="language-sql">SELECT *
FROM reservation
WHERE id NOT IN (
  SELECT reservation_id
  FROM reservation_log
  WHERE change_type = 'cancel'
);</code>
登入後複製

內部查詢選擇與取消關聯的所有 reservation_id 值。然後,外部查詢傳回 id 出現在此取消清單中的所有預訂。

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

此方法使用 LEFT JOIN 來組合 reservationreservation_log 表。 JOIN 條件確保僅考慮取消。 WHERE 子句篩選未找到符合取消的行:

<code class="language-sql">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;</code>
登入後複製

LEFT JOIN 傳回 reservation 表 (r) 中的所有行。 如果存在匹配的取消,則包含相應的reservation_log資料(l);否則,l.id 將是 NULLWHERE l.id IS NULL 條件過濾掉具有符合取消的行,從而有效地隔離未取消的預訂。 最終結果僅選擇預訂資料(r.*)。

兩種方法實現相同的結果,提供未取消的預訂清單。它們之間的選擇通常取決於特定於資料庫系統和資料量的效能考量。

以上是如何從有預訂日誌的資料庫中檢索未取消的預訂?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板