21st Jul 2022 Tempo di lettura: 4 minuti Guida illustrata all'OUTER JOIN di SQL Dorota Wdzięczna join Nozioni di base di SQL Clausole SQL Indice Che cos'è un OUTER JOIN in SQL? Utilizzo di un LEFT OUTER JOIN Utilizzo di una RIGHT OUTER JOIN Utilizzo di una FULL OUTER JOIN Volete saperne di più sulle OUTER JOIN? Abbiamo già parlato di SQL GIUNTA INCROCIATA e JOIN INTERNO e le dichiarazioni. È ora di esplorarne un'altra: OUTER JOIN. Che cos'è? Come funziona? Scopriamolo! Se avete letto gli altri post, sapete che potete collegare i dati di due o più tabelle di database utilizzando uno dei tanti tipi di operatori di join in SQL. Oggi parleremo dei tre tipi di OUTER JOIN: LEFT OUTER JOIN, RIGHT OUTER JOIN e FULL OUTER JOIN. Questi operatori uniscono i record in base alla corrispondenza dei valori delle righe, ma lo fanno in modo un po' diverso rispetto alle altre istruzioni di join. Che cos'è un OUTER JOIN in SQL? Per rispondere a questa domanda, dobbiamo approfondire i diversi tipi di OUTER JOIN: LEFT OUTER JOIN restituisce ogni record della tabella di sinistra e tutti i record corrispondenti della tabella di destra. Se non viene trovata alcuna corrispondenza, accanto al record non corrispondente viene visualizzato un NULL. RIGHT OUTER JOIN restituisce ogni record della tabella di destra e tutti i record corrispondenti della tabella di sinistra. Se non viene trovata alcuna corrispondenza, accanto al record non corrispondente viene visualizzato un NULL. FULL OUTER JOIN restituisce tutti i record di entrambe le tabelle. Tutti i record non corrispondenti sono abbinati a NULL. Vediamo ora le tabelle che utilizzeremo per illustrare questi operatori. La tabella "shirt" ha un solo campo, "color_shirt": color_shirt yellow green blue La tabella "pants" ha anch'essa un campo, "color_pants": color_pants pink green blue Queste tabelle si spiegano da sole. Immaginatele come due parti di un vestito: il colore dei pantaloni e il colore della camicia. L'idea è quella di trovare camicie e pantaloni con colori identici. Buono a sapersi: La tabella di sinistra è la prima tabella elencata e si trova dopo la clausola FROM. La tabella di destra è la seconda tabella elencata e si trova dopo la clausola JOIN. Di solito è possibile omettere la parola chiave OUTER in qualsiasi OUTER JOIN - FULL JOIN, LEFT JOIN e RIGHT JOIN funzionano altrettanto bene in molti database (ma controllate la documentazione per esserne certi). Utilizzo di un LEFT OUTER JOIN LEFT OUTER JOIN recupera tutti i record dalla prima tabella (sinistra) e li abbina ai record della seconda tabella (destra). Anche i record non corrispondenti della tabella di sinistra vengono selezionati, ma con valori NULL al posto dei record della tabella di destra. Date un'occhiata all'esempio. SELECT color_shirt, color_pants FROM shirt LEFT JOIN pants ON color_shirt=color_pants; La tabella di sinistra (dopo FROM) è "shirt" e la tabella di destra (dopo LEFT JOIN) è "pants". Il predicato ON indica la condizione per abbinare i record di "shirt" con i record di "pants". La condizione è che i valori del campo "shirt"."color_shirt" e quelli del campo "pants"."color_pants" devono corrispondere. Se non c'è corrispondenza, verranno mostrati i record della tabella "shirt", ma viene impostato un valore NULL al posto del record "pants". Questi sono i risultati della query: color_shirt color_pants yellow NULL green green blue blue Ecco un'illustrazione di come funziona questa query e di come appaiono i risultati: Come si vede, gli abiti verdi e blu sono abbinati. La camicia gialla non ha i pantaloni perché la tabella "pants" non ha campi con il valore "giallo". Utilizzo di una RIGHT OUTER JOIN RIGHT OUTER JOIN funziona come LEFT JOIN, ma con una differenza sostanziale: seleziona tutti i record dalla tabella giusta (in questo caso, "pants"). I record della tabella di sinistra ("shirt") vengono mostrati solo se corrispondono. Guardate la query: SELECT color_shirt, color_pants FROM shirt RIGHT JOIN pants ON color_shirt=color_pants; Ecco il risultato: color_shirt color_pants NULL pink green green blue blue Ed ecco l'illustrazione dell'uso di RIGHT JOIN e dei suoi risultati. Sono mostrati tutti i pantaloni, ma non c'è una camicia corrispondente per il paio di pantaloni rosa. Utilizzo di una FULL OUTER JOIN Riassumiamo quanto fatto finora. Con LEFT JOIN sono state restituite tutte le camicie e i pantaloni corrispondenti. Con RIGHT JOIN sono stati restituiti tutti i pantaloni e le camicie corrispondenti. Cosa succede se si utilizza FULL OUTER JOIN? Mostra tutti i record di entrambe le tabelle. Se possibile, i record corrispondono; in caso contrario, viene mostrato un NULL al posto del record corrispondente. Vediamo un esempio di query: SELECT color_shirt, color_pants FROM shirt FULL JOIN pants ON color_shirt=color_pants; Si noti che in un FULL JOIN quale tabella sia a sinistra e quale a destra è trascurabile. Il risultato sarà lo stesso. Ecco il risultato: color_shirt color_pants yellow NULL green green blue blue NULL pink L'insieme dei risultati contiene tutti i record memorizzati nella tabella "shirt" e nella tabella "pants". L'immagine mostra che FULL JOIN ha restituito tutti i vestiti possibili: tutte le camicie e tutti i pantaloni. Le coppie corrispondenti (verde e blu) sono mostrate insieme, mentre gli articoli non corrispondenti (camicia gialla e pantaloni rosa) sono mostrati separatamente. Volete saperne di più sulle OUTER JOIN? C'è ancora molto da scoprire sull'uso delle OUTER JOIN. Per saperne di più, visitate il corso LearnSQL.it' SQL Basics . Tags: join Nozioni di base di SQL Clausole SQL