"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment fonctionnent les auto-jointures dans MySQL pour comparer les lignes de la même table ?

Comment fonctionnent les auto-jointures dans MySQL pour comparer les lignes de la même table ?

Publié le 2024-11-20
Parcourir:832

How do self-joins work in MySQL to compare rows from the same table?

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.idevent1.enddateevent2.idevent2.startdate
12023-03-0122023-03-02
32023-03-0342023-03-04

Avec la requête donnée :

  • Elle récupère event1 avec l'identifiant égal à $id (par exemple, 1).
  • Elle calcule la date de fin plus un jour (2023-03-02).
  • Il recherche dans event2 les lignes avec la même date de début (02/03/2023).
  • Il renvoie l'ID, la date de début, et le prix de la ligne event2 correspondante.

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.

Dernier tutoriel Plus>

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