Maison > base de données > tutoriel mysql > 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 ?

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
379 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!

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