INNER JOIN e OUTER JOIN sono due tipi di operazioni JOIN in MariaDB (o MySQL), che combinano le righe da due o più tabelle in base a una relazione tra alcune colonne.
La differenza principale tra i due è come gestiscono i record non corrispondenti.
- INNER JOIN: Produce solo le righe che corrispondono da entrambe le tabelle. Se c’è una riga nella prima tabella che non ha una corrispondenza nella seconda tabella, non verrà inclusa nel risultato. Allo stesso modo, se c’è una riga nella seconda tabella che non corrisponde a una riga nella prima tabella, non verrà inclusa nel risultato.
- OUTER JOIN: Produce le righe che corrispondono da entrambe le tabelle, MA include anche le righe restanti da una tabella (indicata come LEFT o RIGHT a seconda della sintassi utilizzata) anche se non ci sono corrispondenze nella tabella opposta. In altre parole, se stai usando un LEFT OUTER JOIN, otterrai tutte le righe della “tabella sinistra”, indipendentemente dal fatto che esista una corrispondenza nella “tabella destra”, e viceversa per un RIGHT OUTER JOIN. Se stai usando un FULL OUTER JOIN, otterrai tutte le righe da entrambe le tabelle, indipendentemente dal fatto che ci sia una corrispondenza o meno.
Quindi, in termini semplici, INNER JOIN restituisce solo i record che corrispondono, mentre OUTER JOIN restituisce sia i record corrispondenti che quelli non corrispondenti da una o entrambe le tabelle.