Mysql
 sql >> Database >  >> RDS >> Mysql

Come funziona un self-join MySQL?

Il modo in cui proverei a capirlo è scrivere due elenchi sul pezzo uno etichettato evento1 e uno evento2. Quindi elenca alcuni record in ogni elenco (gli elenchi saranno identici) ora inizia da DOVE nella descrizione seguente.

Stiamo prelevando dati da due tabelle (OK, la stessa tabella usata due volte, ma prova a ignorarlo per il momento)

FROM mm_eventlist_dates event1
JOIN mm_eventlist_dates event2 

Probabilmente aiuta a leggere il resto dal basso verso l'alto.

  WHERE event1.id=$id

Quindi vogliamo il record di event1 che ha l'ID record specificato. Presumibilmente questo è esattamente un record. Ora scopriamo il giorno dopo la fine di quell'evento.

 date_add(event1.enddate, INTERVAL 1 DAY)

Ora che ci dice che i record di event2 devono iniziare in quella data,

ON event2.startdate = date_add(event1.enddate, INTERVAL 1 DAY)

Ora abbiamo due record identificati, quali campi vogliamo?

SELECT event2.id, event2.startdate, event2.price

Oh, solo i campi di quello di cui abbiamo scoperto la data di inizio.