Wie funktioniert ein MySQL-Self-Join?
Ein Self-Join in MySQL beinhaltet das Verbinden zweier Instanzen derselben Tabelle, normalerweise mit verschiedene Aliase. Es ermöglicht Ihnen, Zeilen derselben Tabelle anhand bestimmter Kriterien zu vergleichen.
Die Abfrage erklärt
Lassen Sie uns die gegebene Abfrage aufschlüsseln:
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-Klausel
Dies gibt an, welche Tabellen verknüpft werden sollen:
FROM mm_eventlist_dates event1 JOIN mm_eventlist_dates event2
Die gleiche Tabelle, mm_eventlist_dates, wird zweimal verwendet und als Alias für event1 und event2 verwendet.
ON-Klausel
Dies verbindet die beiden Instanzen der Tabelle basierend auf einer Bedingung:
ON event2.startdate = date_add(event1.enddate, INTERVAL 1 DAY)
Es werden Zeilen in event2 gefunden, in denen das Startdatum mit dem Tag nach dem Enddatum von übereinstimmt die entsprechende Zeile in event1.
WHERE-Klausel
Dies filtert die Ergebnisse basierend auf der angegebenen Bedingung:
WHERE event1.id=$id
Wählt Zeilen aus Ereignis1 aus, deren ID mit der angegebenen Variablen $id übereinstimmt.
SELECT-Klausel
Wählt die gewünschten Felder aus den verbundenen Zeilen aus :
SELECT event2.id, event2.startdate, event2.price
Es ruft die ID, das Startdatum und den Preis von der event2-Instanz ab, die die Informationen über Ereignisse enthält, die auf das angegebene Ereignis folgen (Ereignis1) um einen Tag.
Visuelle Demonstration
Stellen Sie sich vor, Sie haben die folgenden Datensätze in der Tabelle 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 |
Mit der angegebenen Abfrage:
Dies zeigt, wie ein MySQL-Selbst -join ermöglicht es Ihnen, verwandte Zeilen anhand bestimmter Kriterien zu identifizieren, sogar innerhalb derselben Tabelle.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3