Una inner join crea una nuova tabella combinando i valori delle due tabelle di partenza (A and B) basandosi su una certa regola di confronto.
La query compara ogni riga della tabella A con ciascuna riga della tabella B cercando di soddisfare la regola di confronto definita.
Quando la regola di join viene soddisfatta, i valori di tutte le colonne delle tabelle A e B vengono combinate in un’unica riga nella costruzione della tabella risultante. La inner join è la forma di join usata più di frequente nelle applicazioni e rappresenta la modalità predefinita.
Per esempio, la seguente query unirà le due tabelle Impiegati e Dipartimenti usando la chiave primaria ID_dipartimento che è la colonna presente in entrambe le tabelle. Quando ID_dipartimento corrisponde in entrambe le tabelle (ovvero la regola è soddisfatta), la query combinerà le colonne Cognome, ID_dipartimento e Nome_dipartimento in un’unica riga per la tabella risultante.
Esempio di inner join in forma esplicita:
SELECT * FROM Impiegati INNER JOIN Dipartimenti ON Impiegati.ID_dipartimento = Dipartimenti.ID_dipartimento
che equivale a:
SELECT * FROM Impiegati, Dipartimenti WHERE Impiegati.ID_dipartimento = Dipartimenti.ID_dipartimento
Risultato della query di Inner join:
Impiegati.Cognome | Impiegati.ID_dipartimento | Dipartimenti.Nome_dipartimento | Dipartimenti.ID_dipartimento |
---|---|---|---|
Santoro | 34 | Risorse umane | 34 |
Bianchi | 33 | Tecnico | 33 |
Monti | 34 | Risorse umane | 34 |
Mancini | 33 | Tecnico | 33 |
Rossi | 31 | Vendite | 31 |
Nota l’impiegato “Grassi” e il dipartimento “Promozione” non sono presenti in quanto l’impiegato Grassi ha un Null
mentre Promozione non compare in nessun impiegato. A volte come risultato finale si desidera avere anche i record che non hanno corrispondenza: in tal caso è possibile usare la query di tipo Outer join.