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
FROM Clause
Cela spécifie les tables à rejoindre :
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 joint les deux instances de la table en fonction d'une condition :
ON event2.startdate = date_add(event1.enddate, INTERVAL 1 DAY)
Il recherche les lignes de l'événement 2 où la date de début correspond au lendemain de la date de fin de la ligne correspondante dans l'événement 1.
Clause WHERE
Ceci 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 à partir des lignes jointes :
SELECT event2.id, event2.startdate, event2.price
Il récupère le ID, date de début et prix de l'instance event2, qui contient les informations sur les événements suivant l'événement spécifié (event1) d'un jour.
Démonstration visuelle
Imagine vous avez les enregistrements suivants dans mm_eventlist_dates table :
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.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3