ホームページ >データベース >mysql チュートリアル >キャンセルされていない予約レコードをデータベースから取得するにはどうすればよいですか?

キャンセルされていない予約レコードをデータベースから取得するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-23 19:46:44743ブラウズ

How to Retrieve Uncancelled Reservation Records from a Database?

キャンセルされていない予約レコードの取得

reservation とreservation_log という 2 つのテーブルが与えられ、reservation には一般的な予約情報が含まれ、reservation_log は予約に加えられた変更 (キャンセルを含む) を追跡します。キャンセルされていない予約を抽出することです。単純な WHERE 句は、キャンセルされた予約を特定する場合には効果的に機能しますが、キャンセルされていないレコードを検索する場合には不十分です。

幸いなことに、このタスクを達成するには 2 つのアプローチを使用できます。

アプローチ 1: NOT を使用するIN

このメソッドは、NOT IN 句を利用して、キャンセルが一致する予約を除外します。 records.

SELECT *
FROM reservation
WHERE id NOT IN (
  SELECT reservation_id
  FROM reservation_log
  WHERE change_type = 'cancel'
);

アプローチ 2: LEFT JOIN の使用

別のアプローチは、LEFT JOIN 操作を使用することです。左結合は予約テーブルからすべての行を取得し、reservation_log テーブルからの対応する行が存在する場合はそれを含めます。一致するキャンセルレコードがない行のreservation_log列にはNULL値が含まれます。その後、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;

以上がキャンセルされていない予約レコードをデータベースから取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。