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

Comment les auto-jointures MySQL aident-elles à trouver des événements qui se produisent un jour après l'autre ?

DDD
Libérer: 2024-11-12 19:56:02
original
1004 Les gens l'ont consulté

How do MySQL Self-Joins Help Find Events That Occur One Day After Another?

Comprendre les auto-jointures MySQL

Comprendre les auto-jointures dans MySQL peut être intimidant, surtout si vous les rencontrez pour la première fois . Analysons la requête suivante pour en comprendre les mécanismes :

SELECT event2.id, event2.startdate, event2.price
FROM mm_eventlist_dates event1
JOIN mm_eventlist_dates event2 
ON event2.startdate = date_add(event1.enddate, INTERVAL 1 DAY)
WHERE event1.id = $id
Copier après la connexion

Décomposer la requête :

FROM et JOIN :

  • Cette requête combine les données de deux tables identiques, mm_eventlist_dates, en utilisant le JOIN mot-clé.
  • Il crée deux tables virtuelles, event1 et event2, représentant deux fois la même table.

OÙ :

  • Cette clause sélectionne un enregistrement spécifique de event1 en fonction de son ID. Supposons que cet enregistrement représente Event1.

ON :

  • Cette clause définit la relation entre les deux tables virtuelles.
  • Il compare la date de début de l'événement2 avec la date de fin de l'événement1, décalée d'un jour.
  • Cette condition garantit que la date de début de l'événement 2 doit être exactement un jour après la fin de l'événement 1.

SELECT :

  • Cette clause spécifie les champs que vous souhaitez récupérer à partir de la requête .
  • Dans ce cas, il sélectionne l'identifiant, la date de début et le prix de event2.

Fonctionnement de la requête :

  1. La requête identifie d'abord l'enregistrement de l'événement 1 qui correspond à l'ID spécifié transmis via la variable $id .
  2. Pour l'enregistrement identifié de l'événement 1, il calcule la date qui est un jour après sa date de fin.
  3. Le la date calculée est ensuite comparée à la date de début des enregistrements dans event2.
  4. Étant donné que event1 et event2 sont des tables identiques, le seul enregistrement correspondant dans event2 aura une date de début un jour après la fin de event1.
  5. Cet enregistrement correspondant de event2 représente l'événement suivant (Event2) qui se produit un jour après Event1.
  6. Enfin, la requête récupère l'ID, la date de début et prix de l'Event2 et les affiche comme résultat.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal