Maison > base de données > tutoriel mysql > Comment récupérer les enregistrements de réservation non annulés à partir d'une base de données ?

Comment récupérer les enregistrements de réservation non annulés à partir d'une base de données ?

Mary-Kate Olsen
Libérer: 2025-01-23 19:46:44
original
670 Les gens l'ont consulté

How to Retrieve Uncancelled Reservation Records from a Database?

Récupération des enregistrements de réservation non annulés

Étant donné deux tables, booking et booking_log, où booking contient des informations générales sur la réservation et booking_log suit les modifications apportées aux réservations (y compris les annulations), la tâche est d'extraire les réservations qui n'ont pas été annulées. Une simple clause WHERE fonctionne efficacement pour identifier les réservations annulées, mais elle ne suffit pas lors de la recherche d'enregistrements non annulés.

Heureusement, deux approches peuvent être utilisées pour accomplir cette tâche :

Approche 1 : Utiliser NOT IN

Cette méthode exploite la clause NOT IN pour exclure les réservations avec annulation correspondante records.

SELECT *
FROM reservation
WHERE id NOT IN (
  SELECT reservation_id
  FROM reservation_log
  WHERE change_type = 'cancel'
);
Copier après la connexion

Approche 2 : Utilisation de LEFT JOIN

Une approche alternative consiste à utiliser une opération LEFT JOIN. La jointure de gauche récupère toutes les lignes de la table de réservation et inclut les lignes correspondantes de la table booking_log si elles existent. Les lignes sans enregistrements d'annulation correspondants auront des valeurs NULL dans les colonnes booking_log. La clause WHERE peut alors filtrer ces lignes.

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;
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal