Sobes.tech
Junior

Qual è la differenza tra INNER JOIN e OUTER JOIN?

sobes.tech AI

Risposta dell'AI

INNER JOIN restituisce solo le righe che hanno corrispondenze in entrambe le tabelle secondo la condizione di join. Se in una delle tabelle non c'è una corrispondenza, quella riga non verrà inclusa nel risultato.

OUTER JOIN restituisce tutte le righe di una tabella e le corrispondenti dell'altra, e se non ci sono corrispondenze, i dati mancanti saranno NULL. Ci sono tre tipi di OUTER JOIN:

  • LEFT OUTER JOIN — tutte le righe della tabella di sinistra + quelle corrispondenti di destra;
  • RIGHT OUTER JOIN — tutte le righe della tabella di destra + quelle corrispondenti di sinistra;
  • FULL OUTER JOIN — tutte le righe di entrambe le tabelle, dove non ci sono corrispondenze, NULL.

Esempio:

SELECT * FROM employees INNER JOIN departments ON employees.dept_id = departments.id;
-- restituirà solo i dipendenti che hanno un dipartimento

SELECT * FROM employees LEFT OUTER JOIN departments ON employees.dept_id = departments.id;
-- restituirà tutti i dipendenti, anche se non hanno dipartimento (nelle colonne departments sarà NULL)