12th Feb 2026 Tempo di lettura: 9 minuti Il connubio perfetto: spiegazione dei join SQL LearnSQL.it Team join Indice L'ambientazione INNER JOIN: Le persone che sono state invitate e si sono presentate ❤️ LEFT JOIN: Tutti coloro che sono stati invitati 💌 RIGHT JOIN: tutti quelli che si sono presentati 🤷 FULL OUTER JOIN: il rapporto completo sulla festa 💝 Stessi dati, domande diverse Dagli ospiti della festa alle tabelle SQL Conclusione: scegliete il JOIN che si adatta alla domanda Non tutti gli inviti portano all'abbinamento perfetto, e lo stesso vale per SQL. Questo articolo spiega l'SQL JOINe utilizzando l'esempio di una lista di invitati a una festa, aiutandoti a comprendere come i diversi tipi di JOIN determinano quali record vengono visualizzati nel risultato. Febbraio è il mese dell'amore. Le app di incontri parlano di abbinamenti, vengono inviati inviti per gli eventi di San Valentino e tutti sperano che le cose vadano per il verso giusto. In SQL, abbiamo a che fare con gli abbinamenti continuamente, solo in modo più pratico. I dati sono spesso distribuiti su più tabelle. Per analizzarli, dobbiamo combinare le tabelle in base ai valori corrispondenti. Questo è esattamente ciò che fanno iSQL JOIN. Collegano le righe di tabelle diverse utilizzando una colonna condivisa e decidono quali record appariranno insieme nel risultato. Per i principianti, all'inizio questo può sembrare astratto. Termini come INNER JOIN o LEFT JOIN descrivono regole precise, ma senza un quadro chiaro è facile perdere di vista ciò che sta realmente accadendo. Padroneggia l'arte dell'abbinamentoSe vuoi evitare le congetture e iniziare a scrivere query come un professionista, il corso SQL JOIN su LearnSQL.it è quello che fa per te. Con 93 esercizi pratici, è progettato per portarti da "È complicato" a "Esperto di SQL" utilizzando scenari reali. È il modo più veloce per rendere i JOIN una seconda natura. In questo articolo useremo una semplice metafora di San Valentino per spiegare SQL JOIN in modo chiaro e intuitivo. L'ambientazione Immagina di organizzare una festa. Potrebbe essere un evento di San Valentino, una festa per single o semplicemente un incontro informale: i dettagli non contano. Prima della festa, create un elenco delle persone che avete invitato. La festa ha luogo e, al termine, potete vedere cosa è successo realmente: alcuni degli invitati si sono presentati alcuni invitati non si sono presentati e alcune persone si sono presentate anche se non erano state invitate Di conseguenza, ti ritrovi con una seconda lista: le persone che hanno partecipato alla festa. Ora hai due liste: persone che sono state invitate persone che si sono presentate In termini SQL, questo ci dà due tabelle. Una tabella memorizza le persone che eraninvitede alla festa, creata prima dell'evento. La seconda tabella memorizza le persone che hanno effettivamente partecipato, in base a ciò che è accaduto nella realtà. Alcuni record appaiono in entrambe le tabelle, altri solo in una. Le SQL JOIN ci aiutano a confrontare queste tabelle e a decidere quali record vogliamo vedere insieme nel risultato. invited id name email 1 Alice alice@email.com 2 Bob bob@email.com 3 Carol carol@email.com 4 Dave dave@email.com showed_up id name arrived_at 1 Alice 2026-02-14 19:08:00 3 Carol 2026-02-14 19:22:00 5 Eve 2026-02-14 19:40:00 Alice e Carol sono state invitate e si sono presentate.Bob e Dave sono stati invitati ma non hanno partecipato.Eve si è presentata senza invito. Confrontando queste due liste si ottengono risposte diverse, a seconda di ciò che si desidera sapere. INNER JOIN: Le persone che sono state invitate e si sono presentate ❤️ Un INNER JOIN è il modo più comune per combinare le tabelle. Cerca la "corrispondenza perfetta" tra i due elenchi. Nel nostro scenario della festa, restituisce solo le persone che: Erano nell'elenco dell'invited. E sono effettivamente showed_up. Se qualcuno è stato invitato ma non è venuto (come Bob), viene escluso. Se qualcuno si è presentato ma non era nell'elenco (come Eve), viene escluso. Solo le "corrispondenze" sovrapposte vengono selezionate. Ecco un consiglio da professionista per i principianti: INNER JOIN è lo standard. Nei database SQL, se si scrive semplicemente JOIN, il database presume che tu intenda INNER JOIN. È l'impostazione "predefinita" per le relazioni tra i dati perché, nella maggior parte dei casi, vogliamo vedere solo i record in cui entrambe le parti concordano. Ora possiamo scrivere un INNER JOIN che restituisce solo gli ospiti invitati che hanno partecipato: SELECT i.id, i.name, i.email, s.arrived_at FROM invited AS i INNER JOIN showed_up AS s ON i.id = s.id ORDER BY s.arrived_at; Risultato id name email arrived_at 1 Alice alice@email.com 2026-02-14 19:08:00 3 Carol carol@email.com 2026-02-14 19:22:00 Alice e Carol compaiono perché il loro id esiste in entrambe le tabelle. Bob e Dave sono esclusi perché non si sono presentati. Eve è esclusa perché non è stata invitata, quindi non c'è nessuna riga corrispondente nell'elenco degli invitati. Nel lavoro reale, INNER JOIN risponde a domande come: Quali utenti invitati hanno effettuato l'accesso? Quali clienti hanno effettuato un ordine? Quali e-mail sono state inviate e aperte? Se non c'è corrispondenza su entrambi i lati, il record semplicemente non appare nel risultato. LEFT JOIN: Tutti coloro che sono stati invitati 💌 Un'operazione LEFT JOIN inizia con la tabella invited. Ciò significa che tutte le persone invitate compaiono nel risultato, indipendentemente dal fatto che si siano presentate o meno. Se qualcuno si è presentato, vengono visualizzati i dati relativi alla sua partecipazione. se non si è presentata, le colonne della showed_up contengono NULL. NULL Significa semplicemente che non è stato trovato alcun record corrispondente. Ecco un LEFT JOIN che mostra tutti coloro che sono stati invitati, insieme all'orario di arrivo se hanno partecipato: SELECT i.id, i.name, i.email, s.arrived_at FROM invited AS i LEFT JOIN showed_up AS s ON i.id = s.id ORDER BY i.id; Risultato id name email arrived_at 1 Alice alice@email.com 2026-02-14 19:08:00 2 Bob bob@email.com NULL 3 Carol carol@email.com 2026-02-14 19:22:00 4 Dave dave@email.com NULL Bob e Dave compaiono nel risultato anche se non hanno partecipato. Il NULL indica semplicemente che non è stata trovata alcuna riga corrispondente nella showed_up tabella. In pratica, LEFT JOIN è utile quando si vuole chiedere: Chi abbiamo invitato, anche se non è venuto? Quali utenti si sono registrati ma non hanno mai effettuato l'accesso? Quali clienti non hanno mai effettuato un ordine? Ecco perché LEFT JOIN è uno dei JOIN più comunemente utilizzati nei report e nelle analisi. Suggerimento professionale: il join "sicuro" Nel mondo professionale, LEFT JOIN è spesso la scelta "preferita" per la reportistica. Perché? Perché è sicuro. Assicura che non si "eliminino" accidentalmente persone dal report solo perché non hanno ancora effettuato alcuna azione. Se si desidera un elenco di tutti i clienti e dei loro ordini, un LEFT JOIN assicura che anche i clienti che non hanno ancora acquistato nulla vengano comunque conteggiati. RIGHT JOIN: tutti quelli che si sono presentati 🤷 Un RIGHT JOIN funziona allo stesso modo di un LEFT JOIN, ma dall'altra parte. Inizia con l' showed_up elenco invece che dall' invited . Ciò significa che: ogni persona che è venuta alla festa appare nel risultato se è stata invitata, si vedono i dettagli dell'invito se non lo era, le colonne dell'invito contengono NULL Questo include naturalmente le persone che si sono presentate senza invito. Ecco un RIGHT JOIN che mostra tutti coloro che si sono presentati, indipendentemente dal fatto che fossero stati invitati o meno: SELECT s.id, i.name, i.email, s.arrived_at FROM invited AS i RIGHT JOIN showed_up AS s ON i.id = s.id ORDER BY s.arrived_at; Risultato id name email arrived_at 1 Alice alice@email.com 2026-02-14 19:08:00 3 Carol carol@email.com 2026-02-14 19:22:00 5 NULL NULL 2026-02-14 19:40:00 Eve appare nel risultato anche se non era stata invitata. I NULL valori nelle colonne degli inviti indicano semplicemente che non c'era alcun record corrispondente nella invited tabella. RIGHT JOIN è meno comune nella pratica perché di solito è possibile riscriverlo come LEFT JOIN cambiando l'ordine delle tabelle. Tuttavia, comprenderne il funzionamento aiuta a leggere e interpretare il codice SQL scritto da altri. FULL OUTER JOIN: il rapporto completo sulla festa 💝 UnFULL OUTER JOIN mostra tutto. Combina entrambe le tabelle e mantiene tutti i record di entrambe le parti, indipendentemente dall'esistenza di una corrispondenza. Ciò significa che vedrai: persone che sono state invitate e si sono presentate persone che sono state invitate ma non sono venute persone che si sono presentate senza invito Nulla viene filtrato. Ecco un FULL OUTER JOIN che produce il rapporto completo sulla festa: SELECT i.id AS invited_id, i.name, i.email, s.arrived_at FROM invited AS i FULL OUTER JOIN showed_up AS s ON i.id = s.id ORDER BY i.id, s.id; Risultato invited_id name email arrived_at 1 Alice alice@email.com 2026-02-14 19:08:00 2 Bob bob@email.com NULL 3 Carol carol@email.com 2026-02-14 19:22:00 4 Dave dave@email.com NULL NULL NULL NULL 2026-02-14 19:40:00 Questo risultato mostra l'intera storia: Alice e Carol sono state invitate e si sono presentate Bob e Dave sono stati invitati ma non hanno partecipato Eve si è presentata senza invito FULL OUTER JOIN è utile quando si desidera avere un quadro completo e non si vuole perdere alcun record da entrambe le tabelle. È particolarmente utile per gli audit, i controlli dei dati e la reportistica di alto livello, dove i dati mancanti sono importanti tanto quanto quelli corrispondenti. Stessi dati, domande diverse La cosa più importante da ricordare riguardo all'SQL JOINe è questa: I dati non cambiano.Cambia solo la domanda. Quando si passa da un INNER JOIN a un LEFT JOIN o un FULL OUTER JOIN, non si modificano le tabelle. Si cambiano solo le regole che decidono quali record appaiono nel set di risultati. Una volta che smetti di pensare ai JOIN come a qualcosa di misterioso e inizi a considerarli come filtri applicati a due elenchi, diventa molto più facile comprenderli. Questo cambiamento di prospettiva è spesso il momento in cui i JOIN finalmente "scattano" per i principianti. Dagli ospiti della festa alle tabelle SQL L'esempio della festa è solo un modo per rendere visibile la logica. Lo stesso schema appare ovunque nel lavoro reale con SQL. Ad esempio: clienti e ordini utenti e accessi e-mail inviate e e-mail aperte In ogni caso, si lavora con due elenchi e si pongono variazioni delle stesse domande: Chi compare in entrambi gli elenchi? Chi compare solo su una delle due? Chi voglio includere nel mio risultato, anche se manca qualcosa? SQL JOIN esistono proprio per rispondere a queste domande. Una volta compreso come funzionano con una semplice lista di ospiti, applicare la stessa logica alle tabelle reali diventa semplice. Conclusione: scegliete il JOIN che si adatta alla domanda In SQL, come in amore, non esiste un unico abbinamento "migliore". Esiste solo il JOIN che si adatta alla domanda che stai ponendo. A volte si desiderano solo corrispondenze confermate e reciproche (INNER JOIN). A volte hai bisogno di vedere chi non ha ancora risposto (LEFT JOIN). A volte si desidera un quadro completo, disordinato e meraviglioso di tutte le persone coinvolte (FULL OUTER JOIN). Una volta che smetti di vedere i JOIN come codice astratto e inizi a vederli come la logica delle relazioni, sblocchi il vero potere dei database relazionali. Comprendere la teoria è un ottimo primo appuntamento, ma la padronanza deriva dalla pratica. Se vuoi smettere di ripensare alla tua sintassi e iniziare a scrivere query complesse con sicurezza, il corso SQL JOIN è il passo successivo perfetto. Supererai la lista degli ospiti e lavorerai con set di dati professionali, sviluppando la memoria muscolare necessaria per una carriera nel campo dei dati. E se sei pronto per una relazione seria e a lungo termine con la tua carriera, il pacchetto SQL di Completo per sempre ti offre accesso illimitato a tutti i corsi che offriamo, dalle query di base all'analisi avanzata dei dati. È il regalo definitivo per il tuo futuro. Non lasciare che i tuoi dati rimangano "complicati". Inizia oggi il tuo viaggio verso la combinazione perfetta. Tags: join