reservation とreservation_log という 2 つのテーブルが与えられ、reservation には一般的な予約情報が含まれ、reservation_log は予約に加えられた変更 (キャンセルを含む) を追跡します。キャンセルされていない予約を抽出することです。単純な WHERE 句は、キャンセルされた予約を特定する場合には効果的に機能しますが、キャンセルされていないレコードを検索する場合には不十分です。
幸いなことに、このタスクを達成するには 2 つのアプローチを使用できます。
このメソッドは、NOT IN 句を利用して、キャンセルが一致する予約を除外します。 records.
SELECT * FROM reservation WHERE id NOT IN ( SELECT reservation_id FROM reservation_log WHERE change_type = 'cancel' );
別のアプローチは、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 サイトの他の関連記事を参照してください。