Riunisce record da due tabelle che includono valori corrispondenti in un campo comune.
Sintassi
FROM tabella1 INNER JOIN tabella2 ON tabella1.campo1compopr tabella2.campo2
L'operazione INNER JOIN è composta dalle parti seguenti:
Parte |
Descrizione |
tabella1, tabella2 |
Nomi delle tabelle di cui vengono combinati i record. |
campo1, campo2 |
Nomi dei campi che vengono collegati tramite join. Se non includono dati numerici, i campi devono essere dello stesso tipo di dati e contenere lo stesso genere di dati, tuttavia non è necessario che abbiano lo stesso nome. |
compopr |
Operatore di confronto relazionale: "=," "<," ">," "<=," ">=," o "<>." |
Osservazioni
È possibile usare un'operazione INNER JOIN in qualsiasi clausola FROM. Questo è il tipo di join più comune. Gli inner join combinano i record di due tabelle che contengono valori corrispondenti in un campo comune a entrambe le tabelle.
È possibile usare INNER JOIN con le tabelle Dipartimenti e Impiegati per selezionare tutti gli impiegati di un dipartimento. Al contrario, per selezionare tutti i dipartimenti (anche se ad alcuni non sono stati assegnati impiegati) o tutti gli impiegati (anche se alcuni non sono assegnati a un dipartimento), è possibile usare un'operazione LEFT JOIN o RIGHT JOIN per creare un outer join.
Se si prova a creare un join tra campi contenenti dati Memo o Oggetto OLE, si verifica un errore.
È possibile creare un join tra due campi numerici di tipo simile. Ad esempio, è possibile creare join tra campi Numerazione automatica e Intero lungo, perché sono tipi simili. Non è però on è possibile creare join tra tipi di campi Precisione singola e Precisione doppia.
L'esempio seguente mostra come creare un join tra tabelle Categorie e Prodotti nel campo IDCategoria:
SELECT CategoryName, ProductName
FROM Categories INNER JOIN Products ON Categories.CategoryID = Products.CategoryID;
Nell'esempio precedente il campo unito in join è IDCategoria, ma non viene restituito nell'output della query perché non è incluso nell'istruzione SELECT. Per includere il campo unito in join, immettere il nome del campo nell'istruzione SELECT, in questo caso Categories.CategoryID.
Usando la sintassi seguente è anche possibile collegare diverse clausole ON in un'istruzione JOIN:
SELECT campi
FROM tabella1 INNER JOIN tabella2 ON tabella1.campo1operatorediconfrontotabella2.tabella1 AND ON tabella1.campo2operatorediconfrontotabella2.campo2) OR ON tabella1.campo3operatorediconfrontotabella2.campo3)];È anche possibile annidare istruzioni JOIN usando la sintassi seguente:
SELECT campi
FROM tabella1 INNER JOIN (tabella2 INNER JOIN [( ]tabella3 [INNER JOIN [( ]tabellax [INNER JOIN ...)] ON tabella3.campo3operatorediconfrontotabellax.campox)] ON tabella2.campo2operatorediconfrontotabella3.campo3) ON tabella1.campo1operatorediconfrontotabella2.campo2;Un'operazione LEFT JOIN o RIGHT JOIN può essere annidata all'interno di INNER JOIN, ma un'operazione INNER JOIN non può essere annidata all'interno di LEFT JOIN o RIGHT JOIN.