ホームページ > データベース > mysql チュートリアル > 2 つのテーブルからキャンセルされていない予約を効率的に取得する方法

2 つのテーブルからキャンセルされていない予約を効率的に取得する方法

Susan Sarandon
リリース: 2025-01-23 19:53:21
オリジナル
420 人が閲覧しました

キャンセルされていない予約を効率的に取得する効果的な方法

この記事では、2 つのテーブル (予約テーブルと予約ログ テーブル) からキャンセルされていない予約情報を効率的に取得する方法について説明します。予約テーブルには予約の詳細が保存され、予約ログ テーブルには予約の変更が記録されます。

1 つの方法は、キャンセルされた予約を最初に選択し、結果から除外することです。ただし、この方法では、キャンセルされたサブスクリプションを取得するためにサブスクリプション ログ テーブルへの追加の接続が必要となり、効率が低くなります。

より効率的な解決策は、サブクエリで 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 列がサブクエリ結果に含まれていないすべての行を取得します。サブクエリは、reservation_log が「キャンセル」である change_type テーブル内の reservation_id 値を選択します。

もう 1 つのオプションは、LEFT 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 テーブル内に一致する行があるかどうかに関係なく、reservation_log テーブル内のすべての行を含めます。 WHERE l.id IS NULL 句は、reservation_log の一致する行が存在する change_type='cancel' テーブル内のすべての行をフィルターで除外し、キャンセルされていない予約のみを残します。

How to Efficiently Retrieve Uncancelled Reservations from Two Tables?

以上が2 つのテーブルからキャンセルされていない予約を効率的に取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート