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 :
- La requête identifie d'abord l'enregistrement de l'événement 1 qui correspond à l'ID spécifié transmis via la variable $id .
- Pour l'enregistrement identifié de l'événement 1, il calcule la date qui est un jour après sa date de fin.
- Le la date calculée est ensuite comparée à la date de début des enregistrements dans event2.
- É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.
- Cet enregistrement correspondant de event2 représente l'événement suivant (Event2) qui se produit un jour après Event1.
- 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!