Maison > base de données > tutoriel mysql > 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 ?

DDD
Libérer: 2024-11-19 00:22:02
original
795 Les gens l'ont consulté

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
Copier après la connexion

Clause FROM

Cela spécifie les tables à join :

FROM mm_eventlist_dates event1
JOIN mm_eventlist_dates event2 
Copier après la connexion

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)
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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 :

  • Il récupère event1 avec l'identifiant égal à $id (par exemple, 1).
  • Il calcule la date de fin plus un jour (02/03/2023).
  • 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.

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