9th Dec 2022 Tempo di lettura: 7 minuti 4 semplici modi per imparare finalmente quale JOIN utilizzare in una query SQL Kateryna Koidan sql imparare sql sql joins Indice Tipi di JOIN SQL: Breve panoramica COLLEGAMENTO INTERNO GIUNTA SINISTRA GIUNTA DESTRA GIUNTA COMPLETA 4 modi per imparare SQL JOINs Probabilmente sapete già che è necessario utilizzare le JOIN per combinare i dati di diverse tabelle. Ma che tipo di JOIN? In questo articolo presenterò quattro semplici modi per imparare finalmente quale JOIN utilizzare in diversi scenari. Prima di passare alle strategie intelligenti per imparare SQL JOINs, vi suggerisco di fare una breve panoramica dei principali tipi di JOIN. Verranno illustrati diversi esempi per capire la differenza tra (INNER) JOIN, LEFT (OUTER) JOIN, RIGHT (OUTER) JOIN e FULL (OUTER) JOIN. Tipi di JOIN SQL: Breve panoramica Per i nostri esempi di JOIN, utilizzeremo i dati di un centro nascite, una struttura sanitaria gestita da ostetriche per madri in travaglio. In particolare, abbiamo due tabelle: newbornsche contiene alcune informazioni di base sui bambini nati in un determinato periodo. midwives, con i nomi e le informazioni sull'esperienza delle ostetriche che lavorano nel nostro centro nascite. Ecco le tabelle: newborns idmother_namegenderweightheightmidwife_id 11Marta StewartMale3.452.0104 12Cathrine BlackFemale3.048.5101 13Julia GreyFemale2.848.1104 14Penelope GreenMale3.852.5105 15Gabriela GarciaMale2.948.8105 16Nikita MooreMale4.053.0102 17Lucy MillerFemale2.547.3101 midwives idfirst_nameyears_experience 101Samantha White6 102Kathleen Webster2 103Sarah McCarty1 105Julia Smith4 106Angela Phillips0 Ora passiamo subito agli esempi. COLLEGAMENTO INTERNO Inizieremo con il tipo di JOIN più comune, ovvero INNER JOIN (o semplicemente JOIN). Questo tipo di join viene utilizzato per visualizzare i record corrispondenti di entrambe le tabelle. Supponiamo di voler ottenere l'id del neonato, il nome della madre e anche il nome dell'ostetrica che ha aiutato durante il travaglio. Per ottenere queste informazioni, possiamo unire i metodi newborns e midwives in base all'ID dell'ostetrica, che è disponibile in entrambe le tabelle: SELECT n.id, n.mother_name, m.name AS midwife FROM newborns n JOIN midwives m ON n.midwife_id = m.id; Per ridurre la digitazione, usiamo degli alias per i nomi delle tabelle: n per newborns e m per midwives. Utilizziamo anche un alias di colonna (m.name AS midwife) per ottenere un nome di colonna significativo nell'output. Ecco il risultato: idmother_namemidwife 12Cathrine BlackSamantha White 16Nikita MooreKathleen Webster 17Lucy MillerSamantha White 14Penelope GreenJulia Smith 15Gabriela GarciaJulia Smith Abbiamo ottenuto le informazioni che volevamo. Tuttavia, si può notare che nella tabella dei risultati mancano alcuni neonati (ID 11 e 13). Ciò significa che i record corrispondenti (cioè gli ID delle ostetriche) non sono stati identificati nella seconda tabella (cioè midwives). Se si desidera mantenere tutti i record della prima tabella, è necessario utilizzare LEFT JOIN. GIUNTA SINISTRA LEFT JOIN o LEFT OUTER JOIN viene utilizzata per visualizzare tutti i record della prima tabella (sinistra) e i record corrispondenti della seconda tabella (destra). Per mantenere tutti i neonati nell'output, si può utilizzare la stessa query di cui sopra, sostituendo semplicemente JOIN con LEFT JOIN: SELECT n.id, n.mother_name, m.name AS midwife FROM newborns n LEFT JOIN midwives m ON n.midwife_id = m.id; E il risultato: idmother_namemidwife 12Cathrine BlackSamantha White 14Penelope GreenJulia Smith 11Marta StewartNULL 13Julia GreyNULL 17Lucy MillerSamantha White 16Nikita MooreKathleen Webster 15Gabriela GarciaJulia Smith Ora abbiamo tutti i record della tabella newborns visualizzati nell'output. Allo stesso tempo, ci sono due record con valori NULL nella colonna ostetrica. A quanto pare, l'ostetrica corrispondente (ID 104) non è presente nelle tabelle. midwives tabelle. Forse ha iniziato da poco a lavorare in un altro centro nascite. Ottimo! Ma è interessante anche vedere se nel nostro centro nascite ci sono ostetriche che non hanno assistito a parti recenti. Scopriamolo usando la RIGHT JOIN. GIUNTA DESTRA RIGHT JOIN o RIGHT OUTER JOIN viene utilizzato per visualizzare tutti i record della seconda tabella (destra) e i record corrispondenti della prima tabella (sinistra). Se si vogliono mantenere tutti i record della tabella midwives, possiamo usare la stessa identica query SQL di prima, sostituendo semplicemente LEFT JOIN con RIGHT JOIN: SELECT n.id, n.mother_name, m.name AS midwife FROM newborns n RIGHT JOIN midwives m ON n.midwife_id = m.id; Si noti che la RIGHT JOIN è usata raramente perché di solito può essere sostituita dalla LEFT JOIN. Nel nostro caso, potremmo usare la LEFT JOIN e invertire l'ordine delle tabelle, cioè mettere midwives nella clausola FROM e newborns nella clausola LEFT JOIN. Il risultato sarebbe lo stesso che si vede qui sotto: idmother_namemidwife 12Cathrine BlackSamantha White 14Penelope GreenJulia Smith 15Gabriela GarciaJulia Smith 16Nikita MooreKathleen Webster 17Lucy MillerSamantha White NULLNULLSarah McCarty NULLNULLAngela Phillips Nella tabella risultante, si può notare che ci sono due ostetriche senza record corrispondenti nella tabella newborns tabella: Sarah McCarty e Angela Phillips. Sembra che queste due ostetriche abbiano meno esperienza e probabilmente assistono le ostetriche più esperte senza essere assegnate a un ruolo importante. Notiamo anche che ancora una volta non vediamo tutti i neonati nell'insieme dei risultati. E se volessimo conservare tutti i record di entrambe le tabelle? In questo caso si dovrebbe usare la FULL JOIN. GIUNTA COMPLETA FULL JOIN o FULL OUTER JOIN viene utilizzato per mantenere tutti i record di entrambe le tabelle. Quindi, se vogliamo mantenere tutti i neonati e tutte le ostetriche nell'insieme dei risultati, possiamo semplicemente sostituire RIGHT JOIN dell'ultimo esempio con FULL JOIN. Si noti anche che l'ordine delle tabelle non ha importanza con FULL JOIN; possiamo cambiare la posizione delle tabelle e ottenere lo stesso risultato: SELECT n.id, n.mother_name, m.name AS midwife FROM newborns n FULL JOIN midwives m ON n.midwife_id = m.id; idmother_namemidwife 11Marta StewartNULL 12Cathrine BlackSamantha White 13Julia GreyNULL 14Penelope GreenJulia Smith 15Gabriela GarciaJulia Smith 16Nikita MooreKathleen Webster 17Lucy MillerSamantha White NULLNULLSarah McCarty NULLNULLAngela Phillips Ora abbiamo alcuni valori NULL in tutte le colonne; questi indicano che alcuni record della tabella di sinistra non hanno trovato corrispondenza nella seconda tabella o che alcuni record della tabella di destra non hanno trovato corrispondenza nella prima tabella. Tutti questi principi di JOIN non sembrano troppo impegnativi, vero? Tuttavia, la scelta della JOIN corretta da utilizzare è spesso una sfida per i principianti. Scopriamo quindi le migliori strategie per padroneggiare SQL JOINs. 4 modi per imparare SQL JOINs Ecco quattro passi per padroneggiare finalmente i diversi tipi di SQL JOINs. Imparare le differenze chiave tra i tipi di JOIN. Il primo passo dovrebbe essere quello di conoscere i quattro principali tipi di JOIN e le regole di base per applicarli: JOIN visualizza solo i record corrispondenti di entrambe le tabelle. LEFT JOIN visualizza tutti i record della tabella di sinistra e i record corrispondenti della tabella di destra. RIGHT JOIN visualizza tutti i record della tabella di destra e i record corrispondenti della tabella di sinistra. FULL JOIN visualizza tutti i record di entrambe le tabelle. Leggete articoli di alta qualità su SQL JOINs. Dopo aver appreso le nozioni di base, si consiglia di esaminare i dettagli e i casi d'uso dei diversi tipi di JOIN. Vi suggerisco di iniziare con questi articoli che trattano tutti i principali tipi di JOIN e includono spiegazioni ed esempi dettagliati: Tipi di JOIN SQL spiegati Che cos'è un INNER JOIN in SQL? Che cos'è una JOIN SINISTRA in SQL? Che cos'è una FULL JOIN e quando usarla? 7 esempi di JOIN SQL con spiegazioni dettagliate Utilizzate il nostro foglio informativo sulle JOIN SQL. Anche se conoscete abbastanza bene SQL JOINs, spesso è utile avere un breve promemoria con la sintassi e i casi d'uso dei diversi tipi di JOIN. Vi consiglio di stampare o inserire tra i preferiti il nostro fantastico SQL JOIN Cheat Sheet. Si tratta di una guida illustrata a SQL JOINs che potete consultare ogni volta che non siete sicuri di come usare le JOIN in una query SQL. Pratica! Infine, se volete davvero padroneggiare il sito SQL JOINs, avete bisogno di molta pratica. Si possono leggere le sfide che si possono incontrare quando si fa pratica con SQL JOINs. Per rendere la vostra prima esperienza con SQL JOINs il più agevole possibile, vi suggerisco di iniziare con il corso interattivo di LearnSQL.com. SQL JOINs di LearnSQL.com. Questo corso pratico comprende 93 sfide di codifica che coprono tutti i principali tipi di SQL JOINs. In particolare, imparerete: Quando usare JOIN, LEFT JOIN, RIGHT JOIN e FULL JOIN. Come unire tre o più tabelle in un'unica query. Come filtrare i dati con diversi tipi di join. Come unire una tabella con se stessa. Che cos'è un join non-equi e quando usarlo. Per saperne di più su questo corso, consultate questo articolo riassuntivo. Grazie per aver letto e buon apprendimento! Tags: sql imparare sql sql joins