sql >> Databasteknik >  >> RDS >> Mysql

Hur fungerar en MYSQL Self-Join?

Sättet jag skulle försöka förstå detta är att skriva ut två listor på del ett märkt händelse1 och en händelse2. Lista sedan några poster i varje lista (listorna kommer att vara identiska) och börja nu vid VAR i beskrivningen nedan.

Vi tar data från två tabeller (OK, samma tabell används två gånger, men försök att ignorera det för tillfället)

FROM mm_eventlist_dates event1
JOIN mm_eventlist_dates event2 

Det hjälper nog att läsa resten nerifrån och upp.

  WHERE event1.id=$id

Så vi vill ha posten från händelse1 som har det angivna post-id. Förmodligen är det exakt ett rekord. Nu räknar vi ut dagen efter att händelsen avslutades.

 date_add(event1.enddate, INTERVAL 1 DAY)

Nu som säger oss posterna från event2, måste de börja på det datumet,

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

Vi har nu två poster identifierade, vilka fält vill vi ha?

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

Åh, bara fälten från den vars startdatum vi räknat ut.



  1. SQL-referenstabell:Hur man skapar och skriver grundläggande frågor

  2. Vad är triggers i SQL och hur implementerar man dem?

  3. När skulle du använda en tabellvärderad funktion?

  4. Hur tolkas sql med rekursivt uttalande?