9th Dec 2022 Tempo di lettura: 5 minuti Guida illustrata all'INNER JOIN di SQL Dorota Wdzięczna join nozioni di base di sql Clausole SQL Indice Che cos'è un INNER JOIN? Come funziona una INNER JOIN JOIN o INNER JOIN? Giunzione con WHERE Utilizzo di una INNER JOIN su più tabelle INNER JOIN vs. CROSS JOIN Per saperne di più sulle JOIN INTERNE Che cos'è e come funziona una INNER JOIN SQL? Scopriamolo! Nel mio ultimo articolo, ho discusso il metodo Operazione CROSS JOIN in SQL. Oggi analizzeremo INNER JOIN e come utilizzarlo. È la stessa cosa di JOIN? Quante tabelle si possono collegare con INNER JOIN? Queste sono tutte buone domande. Vediamo le risposte! Che cos'è un INNER JOIN? INNER JOIN Combina i dati di più tabelle unendoli in base a un record corrispondente. Questo tipo di join richiede una condizione di unione, che spiegheremo tra poco. Per illustrare il funzionamento di INNER JOIN, utilizzeremo alcune semplici tabelle. Due di esse, color e shoes sono mostrate di seguito: color id name 1 yellow 2 green 3 pink shoes id size color_id 1 seven 2 2 eight 2 3 nine 2 4 seven 1 5 nine 1 6 seven 3 7 ten NULL La tabella color memorizza un numero ID e un nome per ogni colore. La tabella shoes memorizza un numero ID per ogni paio di scarpe, il numero di scarpe e un numero ID che si riferisce a un colore nella tabella. color tabella. Come funziona una INNER JOIN In questo esempio, INNER JOIN unisce i record della tabella shoes con i record della tabella color attraverso la colonna color_id della tabella shoes della tabella. I valori di questa colonna sono gli stessi della colonna id della tabella. color della tabella, quindi produce l'insieme di risultati desiderato. Osservate la seguente query: SELECT * FROM shoes INNER JOIN color ON color.id = shoes.color_id; L'istruzione SELECT prende tutti i record dalla tabella elencata dopo la clausola FROM - in questo caso, la tabella shoes tabella. Poi c'è un INNER JOIN con il nome della tabella a cui vogliamo abbinare i record (cioè la tabella). color tabella). Il predicato ON indica la condizione di corrispondenza che i record di entrambe le tabelle devono avere. In questo caso, la condizione è che il campo id della tabella color e il campo color_id della tabella shoes devono avere valori corrispondenti. Se un record non ha una corrispondenza, sarà escluso dai risultati. Osservate l'insieme dei risultati di questa query: id size color_id id name 1 seven 2 2 green 2 eight 2 2 green 3 nine 2 2 green 4 seven 1 1 yellow 5 nine 1 1 yellow 6 seven 3 3 pink Ora possiamo vedere il colore di ogni paio di scarpe, grazie al campo INNER JOIN. Ma notiamo che il record con nella tabella è stato escluso dai risultati. shoes con NULL nella colonna color_id non viene mostrato: non ha trovato corrispondenza in nessuno dei record della tabella. color tabella. JOIN o INNER JOIN? È possibile omettere la parte INNER di INNER JOIN; JOIN funziona allo stesso modo. Osservate l'istruzione seguente. SELECT * FROM shoes JOIN color ON color.id = shoes.color_id; Giunzione con WHERE È anche possibile utilizzare una clausola WHERE come una INNER JOIN. (Questa è una versione precedente della sintassi SQL (ANSI-89); i comandi JOIN utilizzano ANSI-92). Ecco come funziona l'uso di una WHERE: SELECT * FROM shoes, color WHERE color.id = shoes.color_id ; Il risultato è lo stesso: id size color_id id name 1 seven 2 2 green 2 eight 2 2 green 3 nine 2 2 green 4 seven 1 1 yellow 5 nine 1 1 yellow 6 seven 3 3 pink Utilizzo di una INNER JOIN su più tabelle INNER JOIN può essere utilizzato su più di due tabelle. Osservate le tre tabelle qui sotto: color id name 1 yellow 2 green 3 pink material id name 1 leather 2 cotton 3 NULL shoes id size color_id material_id 1 seven 2 1 4 seven 1 2 5 nine 1 1 6 seven 3 NULL 7 ten NULL 1 Utilizziamo un INNER JOIN per combinare le informazioni presenti in tutte e tre le tabelle. La query seguente recupera i record di tutte le scarpe con informazioni sul colore e sul materiale: SELECT * FROM shoes JOIN color ON color.id = shoes.color_id JOIN material ON material.id = shoes.material_id ; Si noti che solo le scarpe con record nonNULL nelle colonne color_id e material_id sono mostrate nel set di risultati. id size color_id material_id id name id name 1 seven 2 1 2 green 1 leather 4 seven 1 2 1 yellow 2 cotton 5 nine 1 1 1 yellow 1 leather INNER JOIN vs. CROSS JOIN Come abbiamo visto, INNER JOIN combina le informazioni di due o più record che hanno campi corrispondenti. Cosa succede quando si usa CROSS JOIN per unire le colonne shoes e color CROSS JOIN non accetta alcuna condizione di ON, il che significa che restituisce un prodotto cartesiano. Osservate la query e l'insieme dei risultati mostrati di seguito: SELECT * FROM shoes CROSS JOIN color ; Risultato? id size color_id id name 1 seven 2 1 yellow 2 eight 2 1 yellow 3 nine 2 1 yellow 4 seven 1 1 yellow 5 nine 1 1 yellow 6 seven 3 1 yellow 7 ten NULL 1 yellow 1 seven 2 2 green 2 eight 2 2 green 3 nine 2 2 green 4 seven 1 2 green 5 nine 1 2 green 6 seven 3 2 green 7 ten NULL 2 green 1 seven 2 3 pink 2 eight 2 3 pink 3 nine 2 3 pink 4 seven 1 3 pink 5 nine 1 3 pink 6 seven 3 3 pink 7 ten NULL 3 pink Tutti i record della tabella shoes sono stati uniti a tutti i record della tabella color tabella. Questo crea alcuni errori. Ad esempio, alcune scarpe non sono elencate con il colore corretto: le scarpe taglia 8 sono disponibili solo in verde (il loro valore color_id è 2), ma in questa istanza di join sono abbinate ad altri colori. I record di NULL nella tabella shoes vengono abbinati ai colori, anche se non hanno un valore paragonabile nel campo color_id. Per saperne di più sulle JOIN INTERNE INNER JOINLe funzioni di join sono piuttosto comuni in SQL. L'obiettivo di questo articolo è stato quello di introdurre i concetti alla base di INNER JOIN, ma c'è molto altro da imparare. Perché non dare un'occhiata al sito LearnSQL SQL Basics corso per saperne di più. Tags: join nozioni di base di sql Clausole SQL