Maison > base de données > tutoriel mysql > le corps du texte

Comment une requête d'auto-adhésion MySQL récupère-t-elle les données liées à la date de fin d'un événement ?

Patricia Arquette
Libérer: 2024-11-10 16:18:03
original
259 Les gens l'ont consulté

How does a MySQL self-join query retrieve data related to an event's end date?

Comprendre le mécanisme des requêtes d'auto-jointure MySQL

Les requêtes d'auto-jointure impliquent de joindre deux instances de la même table pour comparer ou récupérer des données. Examinons les détails de la requête SQL que vous avez présentée :

``
SELECT event2.id, event2.startdate, event2.price
FROM mm_eventlist_dates event1
JOIN mm_eventlist_dates event2
SUR event2.startdate = date_add(event1.enddate, INTERVALLE 1 JOUR)
OÙ event1.id=$id
``

Plonger dans les pièces :

  • DE : Spécifie les tables à joindre, dans ce cas, les deux sont des instances des tables 'mm_eventlist_dates'. Nous les appellerons « event1 » et « event2 » pour éviter toute confusion.
  • JOIN : Lie les lignes de « event1 » à « event2 » en fonction de la condition spécifiée.
  • ON : Définit la condition de jointure, qui dans cette requête est :

    • event2.startdate = date_add(event1.enddate, INTERVAL 1 DAY)
    • Cette condition correspond aux lignes de 'event2' dont les dates de début surviennent un jour après les dates de fin de lignes dans 'event1'.
  • WHERE : Filtre les résultats pour inclure uniquement les lignes où 'event1.id' correspond à l'identifiant $ spécifié.

Comment ça marche étape par étape :

  1. La requête commence par identifier la ligne dans 'event1' qui correspond au paramètre $id donné.
  2. Pour chaque ligne correspondante dans 'event1', il calcule la date de fin plus un jour à l'aide de la fonction date_add(), représentant le début date de la ligne associée dans 'event2'.
  3. La ligne 'event1' est ensuite jointe aux lignes de 'event2' où les dates de début correspondent à la date calculée à partir de étape 2.
  4. Enfin, la requête sélectionne des colonnes spécifiques (ID, date de début et prix) à partir des lignes correspondantes dans « event2 ».

Exemple de scénario :

Considérons un tableau avec l'événement suivant data :

ID Start Date End Date Price
1 2023-03-01 2023-03-10 0
2 2023-03-15 2023-03-22 0
3 2023-04-01 2023-04-08 0

Si vous exécutez la requête avec $id défini sur 1, elle récupérera les données de l'événement 2, qui commence un jour après la date de fin de l'événement 1 :

ID Start Date Price
2 2023-03-15 0

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