Maison  >  Article  >  base de données  >  Comment les auto-jointures MySQL trouvent-elles des événements suivant un autre événement d'un jour ?

Comment les auto-jointures MySQL trouvent-elles des événements suivant un autre événement d'un jour ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-12 02:16:01560parcourir

How do MySQL self-joins find events following another event by one day?

Comprendre les auto-jointures MySQL

Une requête récente a exploré le concept d'auto-jointures dans MySQL. L'objectif était de récupérer des informations sur un événement (Event2) qui suit d'un jour un autre événement (Event1). Pendant que la requête s'exécute avec succès, une meilleure compréhension est recherchée concernant sa fonctionnalité.

Décomposition de la requête :

La requête peut être décomposée en plusieurs parties distinctes :

  • Récupération de données :

    • FROM mm_eventlist_dates event1 : sélectionne les données d'une table nommée mm_eventlist_dates et attribue l'alias event1.
    • JOIN mm_eventlist_dates event2 : effectue une auto-jointure sur mm_eventlist_dates, créant une deuxième table virtuelle alias event2.
  • Condition de jointure :

    • ON event2.startdate = date_add(event1.enddate, INTERVAL 1 DAY) : Spécifie la condition de jointure qui filtre les enregistrements event2 en fonction de leur date de début correspondant à la date de fin de event1 plus un jour.
  • Filtrage :

    • WHERE event1.id = $id : filtre la table event1 pour récupérer uniquement l'enregistrement avec l'ID spécifié.

Comment ça marche :

  1. Sélection d'enregistrement : La clause WHERE récupère d'abord l'événement spécifique (Event1) en fonction de son ID.
  2. Calcul de la date : La fonction date_add() calcule le jour suivant la date de fin de l'événement 1 sélectionné.
  3. Filtrage des jointures : La condition de jointure correspond ensuite aux enregistrements de event2 où la date de début correspond à la date calculée.
  4. Extraction de données : Enfin, la clause SELECT récupère trois champs de la table event2 : ID, date de début et prix. .

Visualisation simplifiée :

Imaginez deux listes d'événements distinctes (Événement1 et Événement2) où chaque événement a un identifiant, une date de début et un prix. Les étapes de la requête sont :

  1. Localisez Event1 avec l'ID spécifié.
  2. Calculez le lendemain de la date de fin de Event1.
  3. Identifiez les événements Event2 pour lesquels leur date de début correspond la date calculée.
  4. Extrayez les champs souhaités des enregistrements Event2 correspondants.

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:
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