Maison > base de données > tutoriel mysql > Comment récupérer efficacement les réservations non annulées de deux tables ?

Comment récupérer efficacement les réservations non annulées de deux tables ?

Susan Sarandon
Libérer: 2025-01-23 19:53:21
original
369 Les gens l'ont consulté

Une méthode efficace pour récupérer efficacement les réservations non annulées

Cet article explique comment récupérer efficacement les informations de réservation non annulées à partir de deux tables (table de réservation et table de journal de réservation). La table de réservation stocke les détails de la réservation et la table du journal de réservation enregistre les modifications de réservation.

Une solution consiste à sélectionner d'abord les réservations annulées et à les exclure des résultats. Cependant, cette méthode nécessite des connexions supplémentaires à la table du journal des abonnements pour obtenir les abonnements annulés, ce qui est moins efficace.

Une solution plus efficace consiste à utiliser la clause NOT IN dans une sous-requête :

<code class="language-sql">SELECT *
FROM reservation
WHERE id NOT IN (select reservation_id
                 FROM reservation_log
                 WHERE change_type = 'cancel');</code>
Copier après la connexion

Cette requête récupère toutes les lignes de la table reservation où la colonne id ne figure pas dans le résultat de la sous-requête. La sous-requête sélectionne les valeurs reservation_log dans la table change_typereservation_id est « annuler ».

Une autre option consiste à utiliser les clauses LEFT JOIN et 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>
Copier après la connexion

Cette requête utilise LEFT JOIN pour inclure toutes les lignes de la table reservation, qu'elles aient ou non des lignes correspondantes dans la table reservation_log. La clause WHERE l.id IS NULL filtre toutes les lignes de la table reservation_log où existe une ligne correspondante de change_type='cancel', ne laissant que les réservations non annulées.

How to Efficiently Retrieve Uncancelled Reservations from Two Tables?

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