20th Jul 2022 Tempo di lettura: 7 minuti Che cos'è il LEFT JOIN in SQL? Kateryna Koidan sql imparare sql sql joins Indice JOIN in SQL Spiegazione del JOIN SINISTRO Come funziona il LEFT JOIN? JOIN SINISTRI SQL in uso Esempio con i dipendenti Esempio con i Paesi È ora di fare pratica con la CONGIUNZIONE A SINISTRA! Scoprite i dettagli della LEFT JOIN, uno dei tipi di JOIN più comuni in SQL. L'SQL si occupa principalmente di ottenere dati dai database. Molto spesso è necessario combinare i dati provenienti da più tabelle del database. È qui che entrano in gioco le JOIN. Il LEFT JOIN è uno dei tipi di JOIN che probabilmente utilizzerete molto spesso. In questo articolo spiegherò la sintassi della JOIN SINISTRA e il suo funzionamento con diversi esempi e illustrazioni. JOIN in SQL In SQL, si utilizza JOIN per combinare i dati di due tabelle in base a una colonna con valori corrispondenti. Ad esempio, se si dispone di una tabella con le informazioni sui clienti (ID cliente, nome, cognome, ecc.) e di un'altra tabella con i dati degli ordini per un periodo specifico (ID ordine, data, ID cliente, ID prodotto, ecc.), è possibile unire queste due tabelle in base alle colonne che memorizzano i numeri di ID cliente. In questo modo si otterranno i dettagli dell'ordine e del cliente per ogni cliente. Tuttavia, è importante sapere che in SQL esistono diversi tipi di JOIN. È necessario scegliere quella giusta in base alle righe che si desidera mantenere nell'insieme dei risultati. Se si è interessati ai clienti che hanno effettuato ordini solo in un determinato periodo di tempo, si utilizzerà una semplice JOIN (chiamata anche INNER JOIN). Questo tipo di JOIN SQL mantiene solo le righe presenti in entrambe le tabelle; nel nostro caso, si vedrà una riga nel set di risultati solo se l'ID del cliente è presente nella tabella customers e nella tabella orders tabella. Ci sono casi in cui si desidera conservare le righe della prima tabella che non hanno i record corrispondenti nella seconda tabella. Ad esempio, è possibile che si vogliano visualizzare le informazioni relative a tutti i clienti presenti nell'insieme dei risultati, anche se non hanno effettuato ordini in un determinato periodo di tempo. In questo caso, si utilizzerà una LEFT JOIN, che combina i dati di due tabelle in modo che tutte le righe della tabella di sinistra (la prima) siano incluse nel risultato. Questo è il tipo di JOIN su cui ci concentreremo in questo articolo. Se non siete sicuri di quale tipo di JOIN avete bisogno in un caso particolare, date un'occhiata al nostro video tutorial su SQL LEFT, RIGHT e FULL JOIN. Spiegazione del JOIN SINISTRO LEFT JOINchiamata anche LEFT OUTER JOIN, restituisce tutti i record della tabella di sinistra (prima) e i record corrispondenti della tabella di destra (seconda). Se non c'è corrispondenza per un record specifico, si ottiene NULLs nelle colonne corrispondenti della tabella di destra. Vediamo come funziona con l'esempio dei clienti e degli ordini di cui sopra. Ecco le nostre tabelle customers e orders e le tabelle. customers idfirst_namelast_name 1SteveBrown 2HelenStewart 3JaneSmith 4JackBond orders iddatecustomer_idproduct_idamount 12020-12-20323213.99 22020-12-20312412.45 32020-12-2111889.95 42020-12-224854.60 Per unire queste due tabelle mantenendo tutti i record della tabella customers è possibile utilizzare la seguente query SQL: SELECT * FROM customers LEFT JOIN orders ON customers.id = orders.customer_id ORDER BY customers.id; Esaminiamo la sintassi di LEFT JOIN: SELECT - Iniziate elencando le colonne (da entrambe le tabelle) che volete vedere nel set di risultati (qui selezioniamo tutte le colonne usando *); FROM - Mettete il nome della tabella di sinistra, quella in cui volete conservare tutti i record (ad esempio, il nome della tabella di destra). customers); LEFT JOIN - Scrivete il nome della seconda tabella (destra) (ad es. orders); ON - Utilizzare questa parola chiave per indicare le colonne che verranno utilizzate per unire le tabelle, cioè quelle con i valori corrispondenti. (Qui è id da customers e customer_id da orders). In questa query, utilizziamo anche ORDER BY per ordinare il risultato in base all'ID del cliente, ma questo è facoltativo. Dopo aver eseguito questa query, si otterrà la seguente tabella. customersorders idfirst_namelast_nameiddatecustomer_idproduct_idamount 1SteveBrown12020-12-2111889.95 2HelenStewart[NULL][NULL][NULL][NULL][NULL] 3JaneSmith32020-12-20323213.99 3JaneSmith32020-12-20312412.45 4JackBond42020-12-224854.60 Guardate l'animazione: Come funziona il LEFT JOIN? Innanzitutto, il database esamina ogni riga della tabella di sinistra e cerca una corrispondenza nella tabella di destra in base alle colonne correlate. Se c'è una corrispondenza, aggiunge i dati della tabella di destra alla riga corrispondente della tabella di sinistra. Se ci sono più corrispondenze (come nel nostro caso con il cliente #3), si duplica la riga della tabella di sinistra per includere tutti i record della tabella di destra. Se non ci sono corrispondenze, mantiene la riga della tabella di sinistra e inserisce NULL nelle colonne corrispondenti della tabella di destra (cliente #2 nel nostro esempio). Semplice, non è vero? Potete esercitarvi con le LEFT JOIN in questo corso interattivo di SQL JOINs . Vediamo ora altri esempi di lavoro con le LEFT JOIN. JOIN SINISTRI SQL in uso Esempio con i dipendenti Abbiamo una tabella con employees e vogliamo abbinarla alla tabella che elenca tutti i bonus pagati a gennaio (jan_bonuses). employees idfirst_namelast_name 1JoeBiden 2BernieSanders 3PeterButtigieg 4ElizabethWarren 5MichaelBloomberg jan_bonuses idemployee_idamount 10113460.00 10222340.00 10341800.00 Vogliamo unire queste tabelle per vedere chi ha ricevuto i bonus a gennaio. Il risultato deve includere tutti i dipendenti, indipendentemente dal fatto che abbiano ricevuto o meno un bonus. Pertanto, utilizzeremo una LEFT JOIN: SELECT * FROM employees LEFT JOIN jan_bonuses ON employees.id = jan_bonuses.employee_id; employeesjan_bonuses idfirst_namelast_nameidemployee_idamount 1JoeBiden10113460.00 2BernieSanders10222340.00 3PeterButtigieg[NULL][NULL][NULL] 4ElizabethWarren10341800.00 5MichaelBloomberg[NULL][NULL][NULL] Come previsto, il risultato include tutti i dipendenti. Se un dipendente non viene trovato nella tabella con le informazioni sui bonus, le colonne corrispondenti della seconda tabella vengono riempite con i valori NULL. Volete sapere come funzionano le altre OUTER JOIN? Leggete questa guida illustrata alle OUTER JOIN di SQL per scoprire come le RIGHT OUTER JOIN e le FULL OUTER JOIN differiscono dalle LEFT OUTER JOIN. Esempio con i Paesi Nel nostro ultimo esempio, uniremo due tabelle usando LEFT JOIN, ma includeremo solo colonne selezionate nel risultato finale. Abbiamo un elenco di Paesi con alcune informazioni di base e vogliamo integrarlo con i dati sul PIL del 2019, se disponibili. countries idnamepopulationcurrencyarea 201United States330,770,244USD9,525,067 202China1,405,631,120CNY9,596,961 203Japan125,770,000JPY377,975 204Germany83,122,889EUR357,114 205India1,370,521,240INR3,287,263 gdp_2019 rankcountry_idgdp_nominal_MUSD 120121,427,700 220214,342,903 32035,081,770 Nel nostro output non abbiamo bisogno di tutte le informazioni su ciascun paese, ma solo dell'ID del paese, del nome, della popolazione e del PIL nominale per il 2019. Ecco la query che utilizzeremo: SELECT id, name, population, gdp_nominal_MUSD FROM countries LEFT JOIN gdp_2019 ON countries.id = gdp_2019.country_id; countriesgdp_2019 idnamepopulationgdp_nominal_MUSD 201United States330,770,24421,427,700 202China1,405,631,12014,342,903 203Japan125,770,0005,081,770 204Germany83,122,889[NULL] 205India1,370,521,240[NULL] La tabella include tre colonne della tabella countries e una colonna della tabella gdp_2019 tabella. Come previsto, LEFT JOIN mantiene tutti i record della prima tabella e inserisce i valori NULL per i record non abbinati. Si noti che in questa istruzione SELECT abbiamo semplicemente elencato i nomi delle colonne che vogliamo vedere nel risultato. Questo funziona solo se non ci sono colonne con lo stesso nome in entrambe le tabelle. L'approccio più sicuro è quello di specificare la tabella per ogni colonna richiesta, cioè countries.id, countries.name, countries.population, gdp_2019.gdp_nominal_MUSD. Se avete bisogno di effettuare una LEFT JOIN con più di due tabelle, leggete la mia guida sull'unione a sinistra di più tabelle in SQL. È ora di fare pratica con la CONGIUNZIONE A SINISTRA! Avete imparato la sintassi di LEFT JOIN e sapete quando e come usare questo tipo di JOIN in SQL. Siete pronti per il passo successivo: scrivere le vostre query SQL con LEFT JOIN. Vi consiglio di iniziare con il nostro SQL JOINs che comprende 93 esercizi interattivi su INNER JOIN, OUTER JOIN, JOIN non uguali e altro ancora. Al termine del corso, saprete come scegliere il tipo corretto di JOIN, come unire più tabelle, come unire una tabella con se stessa e come unire tabelle utilizzando operatori condizionali diversi dall'uguaglianza. Non siete sicuri di poter fare pratica con SQL JOINs online? Date un'occhiata a questo articolo che presenta i migliori approcci per esercitarsi con i diversi tipi di SQL JOINs. Grazie per aver letto e buon apprendimento! Tags: sql imparare sql sql joins