Comment fonctionne une auto-jointure MySQL ?
Une auto-jointure dans MySQL implique de joindre deux instances de la même table, généralement avec différents pseudonymes. Il vous permet de comparer les lignes d'une même table en fonction de critères spécifiques.
La requête expliquée
Décomposons la requête donnée :
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
Clause FROM
Cela spécifie les tables à join :
FROM mm_eventlist_dates event1 JOIN mm_eventlist_dates event2
La même table, mm_eventlist_dates, est utilisée deux fois et alias event1 et event2.
Clause ON
Cela rejoint la deux instances de la table en fonction d'une condition :
ON event2.startdate = date_add(event1.enddate, INTERVAL 1 DAY)
Il trouve les lignes dans event2 où la date de début correspond au lendemain de la date de fin de la ligne correspondante dans event1.
Clause WHERE
Cela filtre les résultats en fonction de la condition spécifiée :
WHERE event1.id=$id
Il sélectionne les lignes de l'événement 1 où l'identifiant correspond à la variable donnée, $id.
Clause SELECT
Cela sélectionne les champs souhaités dans les lignes jointes :
SELECT event2.id, event2.startdate, event2.price
Il récupère l'ID, la date de début, et le prix de l'instance event2, qui contient les informations sur les événements suivant l'événement spécifié (event1) par un jour.
Démonstration visuelle
Imaginez que vous ayez les enregistrements suivants dans la table mm_eventlist_dates :
event1.id | event1.enddate | event2.id | event2.startdate |
---|---|---|---|
1 | 2023-03-01 | 2 | 2023-03-02 |
3 | 2023-03-03 | 4 | 2023-03-04 |
Avec la requête donnée :
Cela montre comment une auto-jointure MySQL vous permet d'identifier les lignes associées en fonction de critères spécifiés, même au sein de la même table.
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!